zoukankan      html  css  js  c++  java
  • (转载)C++抽象工厂模式(大话设计模式)

    #include "iostream"
    using namespace std;
    class IUser
    {public:
    virtual void fun() = 0;
    };
    class SqlUser : public IUser
    {
    public:
    void fun(){cout<<"Sql USER"<<endl;}
    };
    class AcessUser : public IUser
    {
    public:
    void fun(){cout<<"access USER"<<endl;}
    };

    class IDepartment
    {
    public:
    virtual void fun() = 0;
    };
    class sqlDepartment : public IDepartment
    {
    public:
    void fun(){cout<<"sql department"<<endl;}
    };
    class AcessDepartment : public IDepartment
    {
    public:
    void fun(){cout<<"access department"<<endl;}
    };

    class IFactroy
    {
    public:
    virtual IUser* createUser()=0;
    virtual IDepartment* createDepartment()=0;
    };
    class SQLFactroy : public IFactroy
    {
    public:
    IUser* createUser() {return new SqlUser;}
    IDepartment* createDepartment(){return new sqlDepartment;}
    };
    class AcessFactroy : public IFactroy
    {
    public:
    IUser* createUser(){return new AcessUser;}
    IDepartment* createDepartment(){return new AcessDepartment;}
    };
    //全局函数,功能创建特定产品
    IUser* pUser;
    IDepartment* pDepart;
    void create(IFactroy* p)
    {
    pDepart = p->createDepartment();
    pUser = p->createUser();
    }
    void main()
    {
    IFactroy* p = new SQLFactroy;
    create(p);
    pUser->fun();
    pDepart->fun();

    cout<<endl;

    IFactroy* p1 = new AcessFactroy;
    create(p1);
    pUser->fun();
    pDepart->fun();
    }

  • 相关阅读:
    Python form...import...和import的区别(自己理解的)
    ! cocos2d 同一个sprite的触控问题
    cocosjs 触摸
    打包apk
    单例模式
    策略模式
    工厂模式
    cocos3 singleton
    tiledmap2
    quick cocos 暂停场景
  • 原文地址:https://www.cnblogs.com/ccmfc/p/1872059.html
Copyright © 2011-2022 走看看