创建型模式总结

创建型模式基本上全部看了一遍,除了单例模式没有记录,其他都有了笔记,希望有人能指出其中示例代码的错误或者我对这些模式的理解偏差。因为他们都是为了把实例的创建隐藏起来而作的努力,各有特点,可是总体上区别不是特别大。

这一段的感受是,系统和对比的学习的确对知识的理解有益,也能更快的学习新知识,当然,很多时候,贵在坚持。还有,这本中文版的翻译看着真是别扭啊。

单例模式比较简单,而且和其他模式的关注点不同,主要作用是控制对象的实例数量。个人觉着除了懒汉和饿汉的实现区别,还要注意在多线程下的实现。

创建模式的关注点不同

姑且用关注点来表示这些创建型模式的主要特点的区别。

Pattern 关注点
Abstract Factory 一系列的产品的创建,扩展时要新建一个具体的 Factory
Factory Method 单个产品的创建,扩展时要新建一个具体的 Creator
Builder 单个产品的创建过程,扩展时要新建一个具体的 Builder
Prototype 单个产品的创建,扩展时新建一个原型实例

Prototype 和其他的模式主要区别是不再涉及到 creator 这个层次的东西,直接就是一个原型实例做参数,然后复制得到新的实例。

Abstract Factory 和其他模式的区别在于,他易于一系列产品的扩展,但是在扩展不同种类的产品时需要修改抽象的工厂结构,这样导致所有的具体工厂类都要修改。

Builder 模式主要重用的是创建产品的过程,更加适合的是具有相同创建过程的产品。

Factory method 不在意具体的产品实例,拿到实例之后的后续操作是重用的,创建产品的过程不如其他模式灵活。

知道了他们的区别,有时候还是要根据具体的案例,具体分析那种更加灵活便易,来选用合适的模式。

写到这儿,突然想不到下一点是什么了,⊙﹏⊙b

回头有新的理解了再补。