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

时间:2022-12-07 20:32:38

仅供自己参考

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