为什么构建器模式在构建器界面中没有方法`GetResult()`?

时间:2017-09-29 19:27:12

标签: design-patterns builder gang-of-four

四人帮的设计模式, enter image description here

示例:

enter image description here

为什么界面Builder没有方法GetResult(),而这个方法在具体类ConcreteBuilder中被覆盖?

在该示例中,具体构建器具有GetXXX()方法,其中XXX对于不同的混凝土构建器是不同的,这不会促进"编程到接口"一点都不。

这是"遗漏"故意在建造者模式?

1 个答案:

答案 0 :(得分:1)

是的,遗漏是故意的。这本书直接解决了这个问题。

  

为什么没有产品的抽象类?在常见的情况下,生产的产品   具体的建造者在其代表性方面的差异如此之大   从给予不同产品一个共同的父母阶层几乎没有什么好处。因为客户通常   用适当的具体构建器配置导向器,客户端是   能够知道Builder的哪个具体子类正在使用中   相应地处理其产品。

关于对OP的评论,泛型可以通过在GetResult()界面中启用具有泛型返回类型的Builder方法来帮助客户处理产品。