设计模式之简单工厂模式 工厂模式

仅供自己参考

1将一对类的实现放在一个工厂函数里面,根据工厂收到的参数可以创建不同的对象,有利于减少类的耦合性, 客户端不需要知道有哪些类,他只知道工厂类,

优点:

1.隐藏了对象创建的细节,将产品的实例化推迟到子类中实现。

2.客户端基本不用关心使用的是哪个产品,只需要知道用哪个工厂就行了,提供的类型也可以用比较便于识别的字符串。

3.方便添加新的产品子类,每次只需要修改工厂类传递的类型值就行了。

4.遵循了依赖倒转原则。

缺点

1.要求产品子类的类型差不多,使用的方法名都相同,如果类比较多,而所有的类又必须要添加一种方法,则会是非常麻烦的事情。或者是一种类另一种类有几种方法不相同,客户端无法知道是哪一个产品子类,也就无法调用这几个不相同的方法。

2.每添加一个产品子类,都必须在工厂类中添加一个判断分支,这违背了开放-封闭原则。



设计原则

找到系统中变化的部分,将变化的部分同其它稳定的部分隔开。

Program to an interface, not an implementation.(面向接口编程,而不要面向实现编程。)

Favor composition over inheritance.(优先使用对象组合,而非类继承)


工厂模式消除了简单工厂模式的缺点,简单工厂模式在添加类的时候会修改类,违反了开放封闭原则,但是每次增加,都会增加一个新的工厂类 .

简单的来说就是工厂抽象为一个抽象类,然后让每个子类继承抽象类,这样就有利于类的拓展


参考

http://www.cnblogs.com/cxjchen/p/3143633.html

http://www.cnblogs.com/justinw/archive/2007/02/06/641414.html


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值