C++ 简单工厂模式
2013-08-06 00:09
447 查看
假设有如下的场景:
卖pizza的, 可以有很多种pizza(CheesePizza, GreekPizza, PepperoniPizza),我们该如何处理它呢,当然我们可以声明一个类,类中创建每一个种类的pizza。但是这样有什么问题吗?我们没有把需要改变的部分剥离出来。
软件设计的一个原则就是“是易于扩充而不是修改”,另一个是“对接口编程而不是对实现编程”。 这里就轮到工厂模式出手了。
工厂模式有三种:
简单工厂
抽象工厂
工厂方法
下面是简单工厂模式
卖pizza的, 可以有很多种pizza(CheesePizza, GreekPizza, PepperoniPizza),我们该如何处理它呢,当然我们可以声明一个类,类中创建每一个种类的pizza。但是这样有什么问题吗?我们没有把需要改变的部分剥离出来。
软件设计的一个原则就是“是易于扩充而不是修改”,另一个是“对接口编程而不是对实现编程”。 这里就轮到工厂模式出手了。
工厂模式有三种:
简单工厂
抽象工厂
工厂方法
下面是简单工厂模式
#include <iostream> #include <windows.h> #include <memory> using namespace std; class Pizza { public: Pizza(){}; virtual ~Pizza(){}; virtual void MakePizza()=0; }; class CheesePizza:public Pizza { public: CheesePizza(){}; ~CheesePizza(){}; void MakePizza() { cout<<"Make Cheese Pizza"<<endl; } }; class GreekPizza:public Pizza { public: GreekPizza(){}; ~GreekPizza(){}; void MakePizza() { cout<<"Make Greek Pizza"<<endl; } }; class PepperoniPizza:public Pizza { public: PepperoniPizza(){}; ~PepperoniPizza(){}; void MakePizza() { cout<<"Make Pepperoni Pizza"<<endl; } }; enum PIZZA_TYPE { PIZZA_TYPE_CHEESE=0, PIZZA_TYPE_GREEK, PIZZA_TYPE_PEPPERONI }; class PizzaFactory { public: PizzaFactory(){}; ~PizzaFactory(){}; static shared_ptr<Pizza> createPizza(PIZZA_TYPE pizzaType) { switch (pizzaType) { case PIZZA_TYPE_CHEESE: return shared_ptr<Pizza> (new CheesePizza()); case PIZZA_TYPE_GREEK: return shared_ptr<Pizza>(new GreekPizza()); case PIZZA_TYPE_PEPPERONI: return shared_ptr<Pizza>(new PepperoniPizza()); default: return shared_ptr<Pizza>(new PepperoniPizza()); } } }; int main(int argc,char* argv[]) { shared_ptr<Pizza> cheesePizza=PizzaFactory::createPizza(PIZZA_TYPE_CHEESE); shared_ptr<Pizza> greekPizza=PizzaFactory::createPizza(PIZZA_TYPE_GREEK); shared_ptr<Pizza> pepperoniPizza=PizzaFactory::createPizza(PIZZA_TYPE_PEPPERONI); cheesePizza->MakePizza(); greekPizza->MakePizza(); pepperoniPizza->MakePizza(); system("pause"); return 0; }
相关文章推荐
- C++设计模式学习笔记一:简单工厂模式
- 简单工厂模式的c++版本
- c++设计模式之简单工厂模式
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- C++设计模式从0进击-1-简单(静态)工厂模式
- 策略模式与简单工厂的C++实现
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- 设计模式:工厂方法模式(C++)【简单工厂进行升级】
- c++设计模式之简单工厂
- C++设计模式-1简单工厂模式
- 大话设计模式中简单工厂模式和策略模式的商场收银软件实例的C++代码
- 简单工厂设计模式C++实现
- .C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- 简单工厂模式 C++实现
- 设计模式的C++实现 24.简单工厂模式
- 设计模式C++版_1_简单工厂模式
- 【C++设计模式】简单工厂模式
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)zz
- C++设计模式:简单工厂模式