您的位置:首页 > 编程语言 > C语言/C++

7、C语言和设计模式(工厂模式)

2015-08-04 22:02 597 查看
工厂模式是比较简单,也是比较好用的一种方式。根本上说,工厂模式的目的就根据不同的要求输出不同的产品。比如说吧,有一个生产鞋子的工厂,它能生产皮鞋,也能生产胶鞋。如果用代码设计,应该怎么做呢?

[cpp]
view plaincopy

typedef struct _Shoe  
{  
    int type;  
    void (*print_shoe)(struct _Shoe*);  
}Shoe;  

    就像上面说的,现在有胶鞋,那也有皮鞋,我们该怎么做呢?

[cpp]
view plaincopy

void print_leather_shoe(struct _Shoe* pShoe)  
{  
    assert(NULL != pShoe);  
    printf("This is a leather show!\n");  
}  
  
void print_rubber_shoe(struct _Shoe* pShoe)  
{  
    assert(NULL != pShoe);  
    printf("This is a rubber shoe!\n");  
}  

    所以,对于一个工厂来说,创建什么样的鞋子,就看我们输入的参数是什么?至于结果,那都是一样的。

[cpp]
view plaincopy

#define LEATHER_TYPE 0x01  
#define RUBBER_TYPE  0x02  
  
Shoe* manufacture_new_shoe(int type)  
{  
    assert(LEATHER_TYPE == type || RUBBER_TYPE == type);  
  
    Shoe* pShoe = (Shoe*)malloc(sizeof(Shoe));  
    assert(NULL != pShoe);  
  
    memset(pShoe, 0, sizeof(Shoe));  
    if(LEATHER_TYPE == type)  
    {  
        pShoe->type == LEATHER_TYPE;  
        pShoe->print_shoe = print_leather_shoe;  
    }  
    else  
    {  
        pShoe->type == RUBBER_TYPE;  
        pShoe->print_shoe = print_rubber_shoe;  
    }  
  
    return pShoe;  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: