抽象工厂

来源:互联网 发布:什么是网络信息收集 编辑:程序博客网 时间:2024/06/11 02:41

抽象工厂模式,应用于拥有产品组的情形。

#include <iostream>using namespace std;//一个学习用品的工厂类,其中又分是哪个产品种类,产品又分三个色系//红色:笔,笔记本,书包//蓝色:笔,笔记本,书包//绿色:笔,笔记本,书包class Product{public:    virtual void show(){cout<<"Porduct"<<endl;}};//红色系class RedPen:public Product{public:    void show(){cout<<"RedPen"<<endl;}};class RedNoteBook:public Product{public:    void show(){cout<<"RedNoteBook"<<endl;}};class RedBag:public Product{public:    void show(){cout<<"RedBag"<<endl;}};//蓝色系class BluePen:public Product{public:    void show(){cout<<"BluePen"<<endl;}};class BlueNoteBook:public Product{public:    void show(){cout<<"BlueNoteBook"<<endl;}};class BlueBag:public Product{public:    void show(){cout<<"BlueBag"<<endl;}};//绿色系class GreenPen:public Product{public:    void show(){cout<<"GreenPen"<<endl;}};class GreenNoteBook:public Product{public:    void show(){cout<<"GreenNoteBook"<<endl;}};class GreenBag:public Product{public:    void show(){cout<<"GreenBag"<<endl;}};//工厂基类class Factory{public:    virtual Product* getPen(){}    virtual Product* getNoteBook(){}    virtual Product* getBag(){}};//红色系工厂类class RedFactory:public Factory{public:    Product* getPen(){return new RedPen();}    Product* getNoteBook(){return new RedNoteBook();}    Product* getBag(){return new RedBag();}};//蓝色系工厂类class BlueFactory:public Factory{public:    Product* getPen(){return new BluePen();}    Product* getNoteBook(){return new BlueNoteBook();}    Product* getBag(){return new BlueBag();}};//绿色系工厂类class GreenFactory:public Factory{public:    Product* getPen(){return new GreenPen();}    Product* getNoteBook(){return new GreenNoteBook();}    Product* getBag(){return new GreenBag();}};int main(int argc, char *argv[]){    Factory *redFty=new RedFactory();    Product *redPen=redFty->getPen();    if(redPen!=NULL)        redPen->show();    Product* redNoteBook=redFty->getNoteBook();    if(redNoteBook!=NULL)        redNoteBook->show();    Product* redBag=redFty->getBag();    if(redBag!=NULL)        redBag->show();    return 0;}