GoF书中指出构建器模式中的产品类不一定需要从基类继承。具体的构建器类可以生成完全不同的产品,这些产品具有相同的抽象构造步骤。
使用构建器模式的客户端需要实例化具体构建器类并将该对象与Director对象相关联。导演将使用构建器构建对象并最终返回完整对象。
我的问题是,如果产品类不共享相同的基类,那么如何设计导演?在C#中,这可以使用泛型轻松实现,但设计模式不依赖于语言功能。为每种类型的混凝土产品定义单独的方法似乎不太好主意,因为它会将导演与产品类紧密结合,任何新的产品类都需要更改导演类。
请让我知道你的想法。
答案 0 :(得分:2)
该模式并不关心产品的性质,因此如果您有生成不同类型产品的Builders,您当然可以返回Object。结果不再是静态类型,但现在这是消费者的问题,因为他们要求Director使用可以生产任意产品的Builders。