c++的抽象工厂设计模式

首先工厂设计模式分好多种,简单工厂设计模式,方法工厂设计模式,抽象工厂设计模式

今天主要介绍的是抽象工厂设计模式:

分析:

        所谓工厂:用来生产产品;所谓抽象:将共同点提出来形成接口。

1》首先要有产品,产品之间会有共同的特点,所以会抽象出一个产品接口即class Product。产品也是分等级的,分一等,二等,三等等。就拿LOL中的英雄皮肤来说,我们就当英雄的皮肤是分等级(等级越高数越大)的。

2》其次是工厂的创建,工厂之间也是有共同特点的,形成工厂接口class Factory。各工厂是用来生产不同等级的产品的,同一个工厂用来生产同一等级产品的。

所以还是上代码最实在,最能体现抽象工厂模式的威力:

#include 
using namespace std;

//生产剑圣皮肤接口
class JSproduct
{
  public:
    virtual void show() = 0;
};
class JSone : public JSproduct
{
  public:
    void show() { cout << "JSone" << endl; }
};
class JStwo : public JSproduct
{
  public:
    void show() { cout << "JStwo" << endl; }
};
//剑圣增加第三个级别皮肤
class JSthr : public JSproduct
{
  public:
    void show() { cout << "JSthr" << endl; }
};

//生产猴子皮肤
class HZproduct
{
  public:
    virtual void show() = 0;
};
class HZone : public HZproduct
{
  public:
    void show() { cout << "HZone" << endl; }
};
class HZtwo : public HZproduct
{
  public:
    void show() { cout << "HZtwo" << endl; }
};


/**************************增加新的英雄,看看需要改动哪些****************************/
//一:创建新英雄(盲僧)接口类
class MSproduct
{
    public:
        virtual void show() = 0;
};
//二:实现接口,对应创建第一级皮肤
class MSone : public MSproduct
{
    public:
        void show(){cout<<"MSone"<creat1()->show();
    pfone->creat2()->show();
    pfone->creat3()->show();
    FactoryTwo *pftwo = new FactoryTwo();
    pftwo->creat1()->show();
    pftwo->creat2()->show();
    pftwo->creat3();//->show();
    //增加新皮肤时,首先确定等级(这个是第三级)两个步骤->1创建产品类 >2创建第三级工厂类(注意工厂中的接口都要overwrite)
    FactoryThr *pfthr = new FactoryThr();
    pfthr->creat1()->show();
    pfthr->creat2();//->show();
    pfthr->creat3();//->show();

    return 0;
}
其中可能有一些不当的地方,请大家指正!

你可能感兴趣的:(C++,设计模式,工厂设计模式)