zoukankan      html  css  js  c++  java
  • 抽象工厂模式(C++)

    #include <iostream>
    using namespace std;
    
    
    class Fruit
    {
    public:
        virtual void SayName() = 0;
    };
    
    class AbstractFactory
    {
    public:
        virtual Fruit * CreateBanana() = 0;
        virtual Fruit * CreateApple() = 0;
    };
    
    
    
    class NorthBanana :public Fruit
    {
    public:
        virtual void SayName()
        {
            cout << "我是北方香蕉" << endl;
        }
    };
    
    class NorthApple:public Fruit
    {
    public:
        virtual void SayName()
        {
            cout << "我是北方苹果。。" << endl;
        }
    };
    
    class SourthBanana :public Fruit
    {
    public:
        virtual void SayName()
        {
            cout << "我是南方香蕉。。" << endl;
        }
    };
    
    class SourthApple :public Fruit
    {
    public:
        virtual void SayName()
        {
            cout << "我是南方苹果。。" << endl;
        }
    };
    
    class NorthFactory : public AbstractFactory
    {
    public:
        Fruit * CreateBanana()
        {
            return new NorthApple();
        }
        Fruit * CreateApple()
        {
            return new NorthApple();
        }
    };
    
    class SourthFactory : public AbstractFactory
    {
    public:
        Fruit * CreateBanana()
        {
            return new SourthApple();
        }
        Fruit * CreateApple()
        {
            return new SourthApple();
        }
    };
    
    int main()
    {
        AbstractFactory *af = new NorthFactory();
        Fruit * bananan = af->CreateBanana();
        bananan->SayName();
        Fruit * apple = af->CreateApple();
        apple->SayName();
    
        AbstractFactory *af2 = new SourthFactory();
        Fruit * bananan2 = af2->CreateBanana();
        bananan2->SayName();
        Fruit * apple2 = af2->CreateApple();
        apple2->SayName();
        return 0;
    }
  • 相关阅读:
    杭电2042
    杭电2041
    杭电2040
    杭电2046
    SPOJ
    SPOJ
    SPOJ
    HDU
    HDU
    HDU
  • 原文地址:https://www.cnblogs.com/GIScore/p/5322415.html
Copyright © 2011-2022 走看看