[设计模式]简单工厂模式

工厂类含有必要的判断逻辑,可以决定在什么时候使用哪种产品类的实例。

抽象产品类是所创建的所有对象的父类。

具体产品类是创建目标,继承自抽象产品类。

http://design-patterns.readthedocs.org/zh_CN/latest/creational_patterns/simple_factory.html

../_images/SimpleFactory.jpg


#include "Factory.h"
#include "ConcreteProductA"
#include "ConcreteProductB"

Product* Factory::createProduct(string proname) {
	if ('A' == proname) {
		return new ConcreteProductA();
	}
	else if('B' == proname) {
		return new ConcreteProductB();
	}
}


工厂模式的优点在于,当需要什么时,只需要传入一个正确的参数,就能获取你所需要的对象,且无须知道创建细节,参见上面的
createProduct()

工厂类的工厂方法往往是静态方法,可以通过类名直接调用。使用起来很方便。

简单工厂模式将对象的创建和对象本身的业务处理分离,降低了系统和耦合度,使两者修改起来都相对容易。

问题在于,工厂类职责过重,增加新的产品就需要修改相关逻辑,不符合软件开发的开闭原则(对扩展开放,对修改封闭)。且工厂类一旦不能工作,对整个系统都有影响。

简单工厂模式使用了静态工厂方法,造成工厂角色无法形成基于继承的等级结构。

静态方法是该类的行为,与该类的对象无关

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值