2012-10-09 73 views
2

GoF書指出構建器模式中的產品類不一定需要從基類繼承。混凝土建造者類可以生產完全不同的產品,這些產品具有相同的抽象構造步驟產品類沒有基類/接口的構建器設計模式

使用構建器模式的客戶端需要實例化具體構建器類並將該對象與Director對象相關聯。導演將使用構建器構建對象並最終返回完整對象。

我的問題是,如果產品類不會共享相同的基類,那麼將如何設計導演?在C#中,這可以使用泛型輕鬆實現,但設計模式不依賴於語言功能。爲每種類型的混凝土產品定義單獨的方法似乎不是一個好主意,因爲它會將導演與產品類緊密結合,並且任何新產品類都需要改變導演類。

請讓我知道您的想法。

回答

2

該模式並不關心產品的性質,所以如果您擁有生成不同類型產品的構建器,您當然可以返回Object。結果不再是靜態類型,但現在這是消費者的問題,因爲他們已經要求導演使用可以生產任意產品的建造者。