2

来自四人组的设计模式, 在此处输入图像描述

例子:

在此处输入图像描述

为什么接口没有在具体类中被覆盖Builder的方法?GetResult()ConcreteBuilder

在示例中,具体构建器具有GetXXX()方法,XXX不同的具体构建器在哪里是不同的,这根本不促进“编程到接口”。

这种“遗漏”是建造者模式中故意的吗?

4

1 回答 1

2

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

为什么没有产品的抽象类?在常见的情况下,混凝土建造者生产的产品在表示上差别很大,以至于给不同的产品提供一个共同的父类几乎没有什么好处。因为客户通常使用适当的具体构建器来配置导向器,所以客户能够知道正在使用的构建器的具体子类,并可以相应地处理其产品。

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

于 2017-10-03T19:24:15.197 回答