设计模式学习--工厂模式(C++)
来源:互联网 发布:刚哥哥淘宝店招制作 编辑:程序博客网 时间:2024/05/01 20:39
工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。
代码:
#include<iostream>using namespace std;//披萨接口class Pizza{public:Pizza::Pizza(){}virtual GetDescribe() = 0;};//披萨工厂class PizzaFactory{public:PizzaFactory::PizzaFactory(){}virtual Pizza* CreatePizza() = 0;};class PizzaA : public Pizza{public:PizzaA::PizzaA(){}GetDescribe(){cout << "this is PizzaA ! " << endl;}};class PizzaB : public Pizza{public:GetDescribe(){cout << "this is PizzaB ! " << endl;}};class PizzaC : public Pizza{public:GetDescribe(){cout << "this is PizzaC ! " << endl;}};//工厂之一class PizzaAFactory : public PizzaFactory{public:PizzaAFactory::PizzaAFactory(){}Pizza* CreatePizza(){return new PizzaA();}};//工厂之一class PizzaBFactory : public PizzaFactory{public:PizzaBFactory::PizzaBFactory(){}Pizza* CreatePizza(){return new PizzaB();}};//工厂之一class PizzaCFactory : public PizzaFactory{public:PizzaCFactory::PizzaCFactory(){}Pizza* CreatePizza(){return new PizzaC();}};int main(){cout << "PizzaA Factory...." << endl;PizzaAFactory* pPizzaAFactory = new PizzaAFactory();Pizza* pizzaA = pPizzaAFactory->CreatePizza();pizzaA->GetDescribe();cout << "PizzaB Factory...." << endl;PizzaBFactory* pPizzaBFactory = new PizzaBFactory();Pizza* pizzaB = pPizzaBFactory->CreatePizza();pizzaB->GetDescribe();cout << "PizzaC Factory...." << endl;PizzaCFactory* pPizzaCFactory = new PizzaCFactory();Pizza* pizzaC = pPizzaCFactory->CreatePizza();pizzaC->GetDescribe();getchar();}
参考资料:
工厂方法模式
0 0
- 设计模式学习--工厂模式(C++)
- 设计模式----工厂模式(c++)
- 【设计模式C++】工厂模式
- 设计模式学习-工厂模式
- 设计模式学习: 工厂模式
- 设计模式学习>>>>>>工厂模式
- 设计模式学习:工厂模式
- 设计模式学习-工厂模式
- 设计模式学习:工厂模式
- 设计模式学习--工厂模式
- <C/C++ 版> 设计模式 学习之 工厂模式 <1>
- <C/C++ 版> 设计模式 学习之 工厂模式 <2>
- 学习设计模式-方法工厂设计模式
- object c 工厂设计模式
- C#--简单工厂设计模式
- 设计模式 - 简单工厂模式(C++)
- 设计模式之工厂模式(c++)
- 设计模式c++(一)----工厂模式
- C++中禁止类被派生的方法
- 开心的过每一天
- Bound Services(绑定服务)
- Win7下用IIS发布网站
- Android翻译之---- Drag and Drop
- 设计模式学习--工厂模式(C++)
- 你是我最美的相遇
- 为CentOS 6.x添加EPEL源
- AM335x Linux调试1--MLO中打印寄存器值
- POJ 1182 食物链(带权并查集)
- 微软面试100题之14题:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。
- iOS推送证书导出pem文件
- Java抽象类和接口的区别
- AIDL(安卓接口定义语言)