`
chriszeng87
  • 浏览: 741327 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Head First Design Patterns读书笔记 工厂方法模式

 
阅读更多

       这里要说的是工厂方法模式。

1. 工厂方法模式的定义:工厂方法模式定义了创建对象的接口,但让子类来决定实例化哪个product类,推迟类的实例化到子类。

 

2. 工厂方法负责对象的创建,实际的对象创建在子类中进行。这使得父类的client code(调用工厂方法的代码)与子类的创建代码解藕。抽象方法在Creator的父类中定义,一般定义如下:

 

                abstract Product factoryMethod(String type)

 

Creator子类必须实现工厂方法。实现了对interface编程而不是instance编程。符合“对扩展开放,对修改关闭”的OO原则。

 

3.工厂方法模式和简单工厂的区别:简单工厂父类has a factory,由factory来对product实例化。工厂方法模式中creator的父类中有一个抽象工厂方法,creator的子类负责实现这个方法即负责创建product实例。

 

4.工厂方法模式实现了依赖反转。如果不使用工厂方法模式,creator负责创建所有product子类,因此它依赖于所有具体的product子类。但工厂方法中creator和 product的子类都只依赖于抽象的product父类,实现了“依赖于接口,而不依赖于具体实现”的OO原则 。

 

5.依赖反转原则:

 

No variable should hold a reference to a concrete class.

不要用new,用工厂来创建。

 

No class should derive from a concrete class.

从接口继承,不要继承于具体类。

 

No method should override an implemented method of any of its base classes.

如果你重写父类已实现的方法,则你类并不是真正的抽象。父类实现的方法应该让所有子类共享。

 

这只是原则,并非法律!

 

 

简单工厂的好处:

1、充分利用了多态性不管什么具体产品都返回抽象产品。
2、充分利用了封装性,内部产品发生变化时外部使用者不会受到影响。
缺点是:如果增加了新的产品,就必须得修改工厂
(Factory)

 

这种没头没尾的文章确实不好,推荐一入篇好的设计模式的文章:

http://blog.csdn.net/xmouse/article/details/2281920

 

0
3
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics