工厂模式——C++

工厂模式是创建型模式,利用工厂来生产类实例。

主要解决:接口选择的问题。

何时使用:明确计划不同条件下创建不同实例。

适用场景:作为一种创建型模式,在任何需要生成复杂对象的地方,都可以使用工厂模式。复杂对象适合使用工厂模式,简单对象,特别是只需要一个new就可以完成创建的对象,无需使用工厂模式。引入工厂类会增加系统的难度。

工厂方法返回基类指针,创建的对象一般是该基类的派生类,通过虚函数机制,实现多态。

工厂方法实现有多种:

1、静态工厂

该方式有个重要的特点,它拥有一个 create() 的静态方法,通过传入对应的产品名,它会创建具体的实例对象,然后统一返回基类指针。

缺点:扩展性差,新增一个产品都需要新增一个类,并且修改工厂类方法。

2、反射工厂

通过传入的参数名,直接去创建对应的对象,就不能将参数与创建对象一一关联对应起来。

当需要增加新的对象时,就不用修改工厂类方法了。

3、多方法工厂

创建静态方法,为每个产品创建一个静态方法,扩展时,需要为新对象创建一个静态创建方法。

4、普通工厂

为每个产品创建一个工厂,每个产品有一个对应的工厂类,这样可扩展性较好。优点就是拥抱变化。

所以这是一种理念上的差异,首先我们的代码应该是对扩展开放,对修改关闭。

方法1需要修改工厂类方法的代码才能实现扩展,这不是对修改关闭的。

方法2,扩展新产品时,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值