久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3046|回復(fù): 1
收起左側(cè)

設(shè)計(jì)模式----簡(jiǎn)單工廠模式----C實(shí)例

[復(fù)制鏈接]
ID:72519 發(fā)表于 2015-1-23 18:55 | 顯示全部樓層 |閱讀模式
#include "stdlib.h"

//父類
typedef struct _milk milk;
typedef int (*creat_milk_tea)(milk *milk);
struct _milk
{
    char *milk_tea_type;
    int (* creat_milk_tea)(struct _milk *milk);
};

//產(chǎn)品類-----pearl-milk-tea
struct pearl_milk
{
    struct _milk milk;
    int (*delete_pearl_milk)(struct pearl_milk *pearl_milk);
    int (*creat_pearl_milk)(struct pearl_milk *pearl_milk);
};

int delete_milk_pearl(struct pearl_milk *pearl_milk)
{
    free(pearl_milk);
    return 0;
}

int creat_milk_pearl_tea(struct pearl_milk *pearl_milk)
{
    printf("Hi, preal milk is ready!\n");
    return 0;
}

struct pearl_milk *creat_pearl_milk(void)
{
    struct pearl_milk *pearl_milk = NULL;

    pearl_milk = malloc(sizeof(struct pearl_milk));
    if(NULL == pearl_milk)return NULL;

    pearl_milk->delete_pearl_milk = delete_milk_pearl;
    pearl_milk->creat_pearl_milk = creat_milk_pearl_tea;
    pearl_milk->milk.creat_milk_tea = (creat_milk_tea)pearl_milk->creat_pearl_milk;

    return pearl_milk;
}


//工廠類
struct factory
{
    int (*delete_factory)(struct factory *fac);
    struct factory *(*creat_factory)(char *milk_tea_type);
};

int delete_milk_factory(struct factory *fac)
{
    free(fac);

    return 0;
}

milk *creat_milk_factory(char *type)
{
    milk *milk = NULL;

    if(0 == strcmp("pearl", type))
    {
        milk = creat_pearl_milk();
    }
    else
    {
        printf("Sorry! no %s milk tea\n", type);
    }

    return milk;
}

struct factory *creak_factory(void)
{
    struct factory *fac = malloc(sizeof(struct factory));

    if(NULL == fac)return NULL;
    fac->delete_factory = delete_milk_factory;
    fac->creat_factory = creat_milk_factory;

    return fac;
}

int main(int agrc, char *argv[])
{
    struct factory *fac = NULL;
    milk *sale_milk = NULL;

    fac = creak_factory();
    if(NULL == fac)return 1;

    sale_milk = fac->creat_factory(argv[1]);
    if(NULL == sale_milk)return 1;

    sale_milk->creat_milk_tea(sale_milk);
   
    fac->delete_factory(fac);
    free(sale_milk);

    return 0;
}
回復(fù)

使用道具 舉報(bào)

ID:72519 發(fā)表于 2015-1-23 18:55 | 顯示全部樓層
近期會(huì)有一系列的關(guān)于設(shè)計(jì)模式的筆記出來(lái).

http://dong.hongjun888.blog.163. ... 084200892672212217/很好的解釋了簡(jiǎn)單工廠模式.簡(jiǎn)單來(lái)講一個(gè)工廠類就是根據(jù)傳入的參量使用相應(yīng)的產(chǎn)品類,這里面的產(chǎn)品類是實(shí)現(xiàn)產(chǎn)品的實(shí)例,也可以理解為算法。

http://blog.csdn.net/sx_wpc/article/details/7645062用C實(shí)現(xiàn)了簡(jiǎn)單工廠模式.


總之,簡(jiǎn)單工廠模式一般可由三部分組成:

1. 工廠類: 核心, 會(huì)依據(jù)客戶端的需求來(lái)調(diào)用產(chǎn)品類來(lái)創(chuàng)建產(chǎn)品

2. 抽象類: 擔(dān)任父類的角色, 也就說(shuō)工廠所有的產(chǎn)品都有的屬性

3. 產(chǎn)品類: 工廠各個(gè)產(chǎn)品的實(shí)例
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品视频一区二区三区在线观看 | 日本午夜免费福利视频 | 国产精品视频在线播放 | 欧美国产精品 | 91精品一区二区 | 黄视频网址 | 欧美日韩精品一区二区三区四区 | 91免费版在线 | 国产在线一级片 | 视频一区二区在线观看 | 男女激情网站免费 | 国产精品久久久久久久免费观看 | 国产综合久久 | 国产yw851.c免费观看网站 | 久久综合九九 | 99看片网| 羞羞的视频免费在线观看 | 久久精品国产清自在天天线 | 成人精品一区二区三区 | 免费同性女女aaa免费网站 | 日韩精品一区二区三区中文字幕 | 国内91在线 | 影音先锋久久 | 91精品国产色综合久久 | 亚洲国产精品久久人人爱 | 亚洲一区二区三区免费在线观看 | 久久人人国产 | 国产女人与拘做受视频 | 日韩中文在线视频 | 伊人精品在线视频 | 国产精品色| 亚洲性人人天天夜夜摸 | 久久精品国内 | 东京久久 | 午夜精品久久久久久久久久久久 | 精品国产精品一区二区夜夜嗨 | 国产乱码精品一区二区三区中文 | 国产专区在线 | 伊人久操| 超碰人人艹 | 中文字幕在线观看一区 |