工厂模式

1.简单工厂模式

简单工厂模式属于创建型模式,又叫做静态工厂方法模式, 但不属于23种GOF设计模式之一。简单工厂模式的实质是由一个工厂类根据传入的参数,动态的决定应该创建哪个 产品的实例,这些产品都有一个共同的父类(虚基类)或接口。

1.1角色

工厂角色:简单工厂模式的核心,负责实现具体产品的内部逻辑。创建方法可被外界直接调用。
抽象产品角色:简单工厂模式创建的所有对象的父类,描述所有实例的公共接口。
具体产品角色:简单工厂模式的创建目标。

1.2优缺点

优点:
工厂类是整个设计模式的关键,包含了必要的逻辑判断。用户根据参数直接创建所需要的产品,而不必在乎里面具体的实现细节。
缺点:
工厂类聚集了所有实例的内部逻辑,违反了高内聚责任分配原则;它所创建的类都是事先考虑到的,如果需要添加新的类,则需要改变工厂类。随着系统不断的扩展,新的类会越来越多。这个问题在工厂方法模式中得到一定的解决。

1.3使用场景

1.工厂类负责创建的对象较少,最好是已知的情况;
2.用户只需要知道传入的参数,并不关心逻辑。
3.简单工厂很容易违反高内聚责任分配原则,因此一般只在简单情况下使用。
高内聚责任分配原则:衡量一个模块独立性的标准是内聚,也就是模块内各个元素彼此结合的紧密程度。所谓的高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是单一责任原则。
//算法的父类,抽象出返回结果的接口
class Operation
{
public:
    virtual int GetResult() =0;
public:
    double m_Num1;
    double m_Num2;
};
//工厂类,用于生产相应的算法子类
class OperationFactry
{
public:
    OperationFactry(void);
    ~OperationFactry(void);
public:
    static Operation* CreateOperate(int n )
    {
        switch(n)
        {
        case 1:
            return new OperationAdd;
            break;
        }
    }
};
//算法子类,由工厂类创建,重写父类中的虚函数
class OperationAdd
{
public:
    int GetResult();
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值