• 抽象工厂模式(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;
    }
  • 相关阅读:
    Java 多线程同步的五种方法
    MySQL中的内连接、左连接、右连接、全连接、交叉连接
    java中线程安全和非线程安全的集合
    hashCode和equal
    MySQL中char、varchar和nvarchar的区别
    MySQL存储引擎
    String在内存中如何存储(Java)
    String、StringBuffer、StringBuilder区别
    MySQL中的事务
    gbk、utf-8、utf8mb4区别
  • 原文地址:https://www.cnblogs.com/GIScore/p/5322415.html
Copyright © 2020-2023  润新知