构建器模式:所有构建器返回相同的类型吗?

mah*_*007 5 design-patterns builder

在构建器模式中,所有具体构建器是否返回相同类型的对象(每个对象具有不同的属性),还是它们每个构建器都返回某个其他类的子类?

例如,在汽车构建器中,构建器是否都会返回汽车对象,或者构建器是否会返回所有继承自汽车的“luxurycar”、“economyCar”、“sportsCar”等类型的对象?如果后一种情况是正确的,那么构建器如何向它创建的子类对象添加唯一属性?

Rob*_*Rob 1

如果您谈论的是《四人帮》书中的经典构建器模式,通常它会返回一个产品。您没有理由不能构建不同的类型,但由于您将通过基类返回项目,因此必须在强制转换或实例之后访问专业化。

如果您想简单地支持基于不同选项等构建不同类型汽车的想法,那么工厂方法可能是更好的选择。

如果您正在使用 Fluent Interface Builder,则子类型将成为一种拖累,因为您正在链接调用。

一般来说,当构建涉及不同的操作时,Builder 是适用的。总监知道如何操纵建造者来建造产品。您可以让主管对不同类型有专门的知识。整个想法是,总监向产品的消费者隐瞒了施工细节。