设计模式学习(1) --- 3类工厂模式(三)

2015-01-27 18:06:37 · 作者: · 浏览: 167
+实现 抽象工厂模式 *********************************************************************/ #include #include using namespace std; //抽象产品类 class Phone { public : virtual void phoneInf() =0; //纯虚函数 }; //实际产品 class iPhone1 : public Phone { public: void phoneInf() { cout<<"Buy iPhone1"< phoneInf(); phone2->phoneInf(); //秘书叫person2 去买xiaomi1,1s PersonB_XiaoMi person2 ; Phone* phone3 = person2.BuyPhone1(); Phone* phone4 = person2.BuyPhone1s(); phone3->phoneInf(); phone4->phoneInf(); return 0; } 分析组成:和工厂方法模式一样:

a. 抽象产品。 (这里是phone),java中由一个接口或者抽象类实现。C++中可以由抽象类(含有纯虚函数的类)实现。

b.具体产品。这里指的是各个手机厂商产生的产品,比如iphone1,1s,xiaomi1等。java中继承或者实现 抽象类和接口,完成实际产品实例的创建。C++中子类实例化对象。

c. 抽象工厂类(这里是秘书),相比于简单工厂模式,增加的,将秘书从实际劳力中解放出来,只负责安排任务,由一个抽象类实现。但是对于这样的产品族而言,需要重新设计秘书类了。如本例中。

d.实际工厂。指的是 实际买手机的人。实际类实例化。