C++中的工厂模式怎么实现

这篇文章主要讲解了“C++中的工厂模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中的工厂模式怎么实现”吧!

这篇文章主要讲解了“C++中的工厂模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中的工厂模式怎么实现”吧!
工厂模式中使用了多态的原理,来将具体实现和接口进行有效的解耦合,符合开闭原则和依赖倒置原则
需要新加功能的时候不需要对原有代码进行修改。
抽象类human和抽象类factory就是调用接口,而实际的生产过程通过factory的子类(如boyfactory)来new

一个具体的human(如:boy)子类然后返回一个human父类的指针完成,如下图:

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、网络空间、营销软件、网站建设、涟水网站维护、网站推广。

具体的代码如下:

点击(此处)折叠或打开

#include

using namespace std;

//工厂模式新增功能并不会修改原有代码符合开闭原则

//使用多态实现

//纯虚拟接口

class human

{

  public:

    virtual void getman(void) = 0;

    virtual ~human()

    {

        //cout<<"4:"<

    }

};

class factory

{

public:

    virtual human* greman(void) = 0;

    virtual ~factory()

    {

       // cout<<"3:"<

    }

};

/////boy

class boy:public human

{

public:

    virtual void getman(void)

    {

        cout<<"I'M BOY!"<

    }

     virtual ~boy()

    {

      // cout<<"2:"<

    }

};

class boyfactory:public factory

{

private:

    boy* p;

public:

    virtual human* greman(void) //负责生产boy言外之意就是调用一个new来new出内存空间

    {

        p = new boy;

        return p;

    }

    virtual ~boyfactory()

    {

       // cout<<"1:"<

        delete p;

    }

};

//后来新建的woman工厂和woman定义

//////////////woman

class woman:public human

{

public:

    virtual void getman(void)

    {

        cout<<"I'M woman!"<

    }

     virtual ~woman()

    {

     // cout<<"5:"<

    }

};

class womanfactory:public factory

{

private:

    woman* p;

public:

    virtual human* greman(void) //负责生产woman言外之意就是调用一个new来new出内存空间

    {

        p = new woman;

        return p;

    }

    virtual ~womanfactory()

    {

        //cout<<"6:"<

        delete p;

    }

};

///////////////////////

int main(void)

{

    //生产boy

    factory* fa1= new boyfactory;

    human* hm1 = NULL;

    hm1 = fa1->greman();

    hm1->getman();

    delete fa1;

    //生产woman

    factory* fa2= new womanfactory;

    human* hm2 = NULL;

    hm2 = fa2->greman();

    hm2->getman();

    delete fa2;

    cout<<"hello!"<

}


网页题目:C++中的工厂模式怎么实现
文章转载:http://myzitong.com/article/cpoi.html