工厂模式

一,工厂模式

原理:

提供了一种创建相关对象的接口,而无需指定他们的类型。


应用实例:

系统提供了标准的UIButton类,但是系统提供的标准类没办法满足我们的需求。此时我们会在UIButton的基础上创建一些自定义的类,例如UIAButton,UIBButton,UICButton。我们可以在需要使用这些自定义的类时,直接使用这些实现类创建对象,采用硬编码的方式与其他的代码耦合在一起。但是如果有一天我们发现UIAButton已经不满足我们的要求,我们要用UIDButton来替换UIAButton,就要在我们的代码里找到每一处使用UIAButton的位置,然后使用UIDButton进行替换,如果发现程序里有100多个地方使用到UIAButton,直接爆炸。我们也可以采用另外一种方法,即创建一个Factory类,在这个类里针对上面的每一个实现类,定义一个对应实现类对象的方法,每个方法返回一个UIButton指针。这样做实现类没有与代码硬编码在一起,如果要用BIDbutton来替换UIAButton,只需要在修改相关的工厂方法即可非常方便。下面是我们的代码实现:

#include <iostream>
using namespace std;

class UIButton{
public:
    virtual void display(){}
};

class RedButton : public UIButton{
public:
    void display(){
        cout<<"RedButton"<<endl;
    }
};

class GreenButton : public UIButton{
public:
    void display(){
        cout<<"GreenButton"<<endl;
    }
};

class Factory{
public:
    static UIButton *createRedButton(){
        return new RedButton;
    }

    static UIButton *createGreenButton(){
        return new GreenButton;
    }
};

int main() {
    UIButton *redButton = Factory::createRedButton();
    redButton->display();

    UIButton *greenButton = Factory::createGreenButton();
    greenButton->display();
    return 0;
}
输出结果:
RedButton
GreenButton

Process returned 0 (0x0)   execution time : 0.012 s
Press any key to continue.

程序分析:

所有的按键对象都是使用Factory类中的方法进行创建的,如果以后我们对RedButton不满意,要对它进行修改,只需要修改Factory类中的相关代码,使用起来比较的方便,程序具有很强的扩展性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值