简单工厂模式
今天学习一个简单的模式,简单工厂模式。对于这个模式,还是有些争论的,但不是针对它的内容以及使用,而是说它属不属于设计模式范畴,当然我从不关心这个,只要好用我拿来用就是了。
OK,继续。
定义:
简单工厂模式,把对象的产生过程封装成一个类,这个类就是工厂类,客户需要对象时,向工厂索取就可以了。
下面一个例子,生产Pizza过程,当客户到PizzaStore买Pizza时,只需要告诉想要的type就可以了。
ClassDiagram:
PizzaStore.h
- #if !defined(_PIZZASTORE_H)
- #define _PIZZASTORE_H
- #include "Pizza.h"
- #include <string>
- using namespace std;
- class PizzaStore
- {
- public:
- Pizza* orderPizza(string type);
- };
- #endif //_PIZZASTORE_H
SimplePizzaFactory.h
- #if !defined(_PIZZASTORE_H)
- #define _PIZZASTORE_H
- #include "Pizza.h"
- #include <string>
- using namespace std;
- class PizzaStore
- {
- public:
- Pizza* orderPizza(string type);
- };
- #endif //_PIZZASTORE_H
Pizza.h
- #if !defined(_PIZZA_H)
- #define _PIZZA_H
- class Pizza
- {
- public:
- virtual void prepare();
- virtual void bake();
- virtual void cut();
- virtual void box();
- };
- #endif //_PIZZA_H
CheesePizza.h
- #if !defined(_CHEESEPIZZA_H)
- #define _CHEESEPIZZA_H
- #include "Pizza.h"
- class CheesePizza : public Pizza
- {
- public:
- CheesePizza();
- };
- #endif //_CHEESEPIZZA_H
ClamPizza.h
- #if !defined(_CLAMPIZZA_H)
- #define _CLAMPIZZA_H
- #include "Pizza.h"
- class ClamPizza : public Pizza
- {
- public:
- ClamPizza();
- };
- #endif //_CLAMPIZZA_H
Output:
- Hello World!
- Cheese Pizza prepare bake cut box.
- Clam Pizza prepare bake cut box.
- Press any key to continue
完整的工程代码,VC6.0.
阅读(706) | 评论(0) | 转发(0) |