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;
    }
  • 相关阅读:
    Mixtile LOFT
    关于Linux系统清理/tmp/文件夹的原理
    在大型项目上,Python 是个烂语言吗
    Nginx 进程间通信
    蕤仁肉(内仁肉、泪仁肉)简单介绍
    TMS320F28335项目开发记录5_28335之CCS编程基础
    RBAC权限管理
    国内三大PT(Private Tracker)站分析
    Nginx特点
    java设计模式演示样例
  • 原文地址:https://www.cnblogs.com/GIScore/p/5322415.html
Copyright © 2011-2022 走看看