[每天读书半小时] 2015-6-8 设计模式
看Jersey文档中的OAuth1Parameters。这个类使用了builder模式,于是找出四人帮的《设计模式》一书温习一下builder模式。
==============================
builder模式的适用场景:
1. 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
2. 当构造过程必须同意被构造的对象有不同的表示时。
==============================
builder模式的效果:
1. 它使你能够改变一个产品的内部表示
2. 它将构造代码和表示代码分开
3. 它使你可对构造过程进行更精细的控制
==============================
实现中的考虑:
1. builder类的接口足够普遍以便为各种类型的builder构造产品
2. 产品没有抽象类 - 详细builder类生成的产品。通常它们的表示区别非常大。
区别太大的情况下。给产品定义公共接口没有多大的意义。
针对这一点,我认为假设差异性没有那么大。给产品提供一个抽象基类或接口也是非常好的。比方我在项目中做的文件格式转换。一些3D格式尽管各有不同可是还是有足够的共性,比如mesh, cs, materials,animation等是能够抽取的。
3. C++实现Builder类时。方法的缺省实现为空。
这样做主要是为了方便 - 详细的builder类仅仅须要实现感兴趣的方法。
事实上从去年下半年開始就想将基本经典的书籍又一次读一遍,但是一直未能如愿。完整地读《设计模式》应该是在10年前了,那个时候非常傻非常天真。书中的东西仅仅懂了皮毛记住了几个模式的名称。深入理解尚不可及,何论融会贯通?近几年大部分时间都被微博微信碎片化。看的东西非常零碎非常肤浅,可以在心里留下痕迹的非常少。从六月份開始,下定决心每天读书做记录,管理好自己的读书时间。