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

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

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

最佳答案 如果您正在谈论Gang of Four书中的经典Builder模式,通常它会返回一个Product.没有理由不能构建不同的类型,但由于您将通过基类返回项目,因此必须在演员或实例之后访问特化.

如果你想简单地支持基于不同选项等构建不同类型汽车的想法,工厂方法可能是更好的匹配.

如果您正在使用Fluent Interface Builder,则子类型将成为拖动因为您正在链接调用.

通常,当构造涉及不同的操作时,Builder适用. Director知道如何操纵Builders来构建产品.您可以让Director对不同类型有特殊了解.整个想法是,主任正在掩盖产品消费者的建筑细节.

点赞