首页 > 编程语言 > 详细

c++设计模式——工厂模式

时间:2020-03-10 22:05:39      阅读:48      评论:0      收藏:0      [点我收藏+]

简单工厂模式,一个工厂,多个产品;增加一种产品,就要修改工厂类中的代码,违反了对扩展开放,对修改关闭原则,会使得代码边的臃肿

#include <iostream>
using namespace std;

class Product
{
public:
    virtual void show()=0;
};
class PA:public Product
{
public:
    void show()
    {
        cout<<"this is a"<<endl;
        return ;
    }
};
class PB:public Product
{
public:
    void show()
    {
        cout<<"this is b"<<endl;
        return ;
    }
};
class Factroy
{
public:
    Product* create(int i)
    {
        switch (i)
        {
        case 1:
            return new PA();
            break;
        case 2:
            return new PB();
            break;
        default:
            return nullptr;
        }
        return nullptr;
    }
};
int main()
{
    
    Factroy f;
    f.create(1)->show();
    f.create(2)->show();

    return 0;
}

定义一个创建对象的接口, 让其子类自己决定实例化哪一个工厂类,多个工厂多个产品,当增加一个新产品时,同时增加一个新工厂。增加新工厂属于扩展,不会修改以前工厂类和产品类的任何代码。

#include <iostream>
using namespace std;

class Product
{
public:
    virtual void show()=0;
};
class PA:public Product
{
public:
    void show()
    {
        cout<<"this is a"<<endl;
        return ;
    }
};
class PB:public Product
{
public:
    void show()
    {
        cout<<"this is b"<<endl;
        return ;
    }
};

class Factroy
{
public:
    virtual Product* create()=0;
};
class FA:public Factroy
{
public:
    Product* create()
    {
        return new PA();
    }
};
class FB:public Factroy
{
public:
    Product* create()
    {
        return new PB();
    }
};
int main()
{
    FA fa;
    fa.create()->show();
    FB fb;
    fb.create()->show();
    return 0;
}

 

c++设计模式——工厂模式

原文:https://www.cnblogs.com/tianzeng/p/12458828.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!