示例:
为什么界面Builder
没有方法GetResult()
,而这个方法在具体类ConcreteBuilder
中被覆盖?
在该示例中,具体构建器具有GetXXX()
方法,其中XXX
对于不同的混凝土构建器是不同的,这不会促进"编程到接口"一点都不。
这是"遗漏"故意在建造者模式?
答案 0 :(得分:1)
是的,遗漏是故意的。这本书直接解决了这个问题。
为什么没有产品的抽象类?在常见的情况下,生产的产品 具体的建造者在其代表性方面的差异如此之大 从给予不同产品一个共同的父母阶层几乎没有什么好处。因为客户通常 用适当的具体构建器配置导向器,客户端是 能够知道Builder的哪个具体子类正在使用中 相应地处理其产品。
关于对OP的评论,泛型可以通过在GetResult()
界面中启用具有泛型返回类型的Builder
方法来帮助客户处理产品。