+实现 抽象工厂模式
*********************************************************************/
#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.实际工厂。指的是 实际买手机的人。实际类实例化。