Aha!设计模式(14)-BUILDER(5)

2019-04-13 13:56发布

效果   这里是Builder模式的主要效果:
1 ) 它使你可以改变一个产品的内部表示。
  首先明确两个词。一是前面已经提到过《设计模式》书中将representation翻译成表示,作者认为应该译为表现;二是关于内部的理解。当我们用不同的方式盖两座大楼时,它们的内部当然不同,但是大多数情况下外部也会不同。所以作者认为,《设计模式》这部分内容中提到的内部,应该指的是隐藏在构建接口后面的那部分。   Builder对象提供给导向器一个构造产品的抽象接口。该接口使得生成器可以隐藏这个产品的表示和内部结构。它同时也隐藏了该产品是如何装配的。因为产品是通过抽象接口构造的,你在改变该产品的内部表示时所要做的只是定义一个新的生成器。   这段话的另一个问题就是所谓的表现,内部结构和如何装配的问题。   例如对于如下的Work文档。     可以定义转换成其他格式的Builder:       抽象接口只是定义了生成两种标题和正文的接口,具体的实现,例如如何表现,怎么装配等完全交给具象类。   对于HtmlBuilder,其生成的文件如下,除了红 {MOD}粗体的文字以外,增加了非常多的信息,例如HTML版本,文件开始结束标记,META信息等等,等等。                                          



AhaDesignPattern(15)-BUILDER(5)


000000">Consequences


000000">Here are key consequences of the Builder pattern:

  对于同样的接口,MarkDownBuilder生成以下的文档:     # Aha!DesignPattern(15)-BUILDER(5)   ## Consequences   Here are key consequences of the Builder pattern:   增加的只有两个表示标题的标记:#和##。   作者观点   某位大师(据说是Andrew Koenig)说过:Abstraction is selective ignorance. (抽象就是有选择地装糊涂。) 。换句话说抽象就是选择性地将一部分信息隐藏起来,装作看不见。因为看不见,所以降低了耦合性。具体到Builder模式,隐藏了构建产品的细节,所以得到了生成不同产品的灵活性。   注:   本文中蓝 {MOD}粗体文字都引自《设计模式》一书。   觉得本文有帮助?请分享给更多人。 阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】