设计模式---抽象工厂模式(C++实现)

    xiaoxiao2021-03-25  72

    /*************************************************************************** 抽象工厂:     工厂方法只能生产单一的产品     对工厂再次进行抽象,一个工厂可以生产多个产品;     2(A,B)个产品,2(C,D)个工厂,那么产品就会出现,C 生产的A,B  D生产的A,B从而对应4中产品     1.创建工厂,工厂可以生产多个产品     2.使用此接口去生产对应的产品,可以生产1个或者两个;比如:创建C工厂,那么我可以创建CA 或者CB具有选择性 相似性:抽象出接口,然后实现此接口 *****************************************************************************/ #include<iostream> using namespace std; class Fruit { public:     virtual void sayname() = 0; }; class FruitFactory { public:     virtual Fruit* getApple() = 0;     virtual Fruit* getBanana() = 0; }; class SouthBanana : public Fruit { public:     virtual void sayname()     {         cout << "South Banana " << endl;     } }; class SouthApple : public Fruit { public:     virtual void sayname()     {         cout << "South Apple " << endl;     } }; class NorthBanana : public Fruit { public:     virtual void sayname()     {         cout << "North Banana " << endl;     } }; class NorthApple : public Fruit { public:     virtual void sayname()     {         cout << "North Apple " << endl;     } }; class SourthFruitFactory : public FruitFactory { public:     virtual Fruit* getApple()     {         return new SouthApple();     }     virtual Fruit* getBanana()     {         return new SouthBanana();     } }; class NorthFruitFactory : public FruitFactory { public:     virtual Fruit* getApple()     {         return new NorthApple();     }     virtual Fruit* getBanana()     {         return new NorthBanana();     } }; void main() {     FruitFactory * ff = new SourthFruitFactory();     Fruit *fruit = ff->getApple();     fruit->sayname();     fruit = ff->getBanana();     fruit->sayname();     delete fruit;     delete ff;

        ff = new NorthFruitFactory();     fruit = ff->getApple();     fruit->sayname();     fruit = ff->getBanana();     fruit->sayname();

        delete fruit;     delete ff;     system("pause"); }

    转载请注明原文地址: https://ju.6miu.com/read-36743.html

    最新回复(0)