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

標題: 設計模式----簡單工廠模式----C實例 [打印本頁]

作者: liuda    時間: 2015-1-23 18:55
標題: 設計模式----簡單工廠模式----C實例
#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);
};

//產品類-----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;
}

作者: liuda    時間: 2015-1-23 18:55
近期會有一系列的關于設計模式的筆記出來.

http://dong.hongjun888.blog.163. ... 084200892672212217/很好的解釋了簡單工廠模式.簡單來講一個工廠類就是根據傳入的參量使用相應的產品類,這里面的產品類是實現產品的實例,也可以理解為算法。

http://blog.csdn.net/sx_wpc/article/details/7645062用C實現了簡單工廠模式.


總之,簡單工廠模式一般可由三部分組成:

1. 工廠類: 核心, 會依據客戶端的需求來調用產品類來創建產品

2. 抽象類: 擔任父類的角色, 也就說工廠所有的產品都有的屬性

3. 產品類: 工廠各個產品的實例




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 天堂国产 | 日韩欧美在线视频一区 | 午夜视频一区 | 欧美乱淫视频 | 国产91av视频 | 亚洲精品女人久久久 | 麻豆亚洲 | 午夜国产精品视频 | 国产在线第一页 | 一区二区影视 | www.v888av.com| 亚洲国产成人精品女人 | 日韩 欧美 综合 | 日本不卡一区 | 成人精品一区亚洲午夜久久久 | 日韩一区二区三区在线观看 | 国产日韩欧美 | 国产午夜精品一区二区 | 日韩在线免费视频 | 久综合 | 亚洲精品乱码久久久久v最新版 | 黄色片网此 | 亚洲天堂男人的天堂 | 黄色免费看 | 日本网站在线看 | 国产精品无码专区在线观看 | 午夜小电影| 在线不卡视频 | 久久精品成人 | 91免费电影 | 黑人久久 | 超碰成人免费观看 | 亚洲欧美中文日韩在线v日本 | 欧美美女被c | 国产精品色av | 日韩视频在线免费观看 | 久久精品综合 | 国产成人99久久亚洲综合精品 | 欧洲精品一区 | 国产激情91久久精品导航 | 日韩在线免费视频 |