我需要一些關於如何構建一個充當Builder的流暢接口的建議,負責根據調用的方法返回不同的具體類型。Fluent接口構建不同的混凝土類型
想象一下,我需要使用我的ProductBuilder(流利地)創建以下類型之一:Product,ServiceProduct,PackagedProduct(都來自Product)。
我想用這樣的語法通順(其他建議十分歡迎更多):
要創建一個產品:
var product = new ProductBuilder()
.Create("Simple product")
.WithPrice(12.5)
要創建ServiceProduct
var product = new ProductBuilder()
.Create("Service product")
.WithPrice(12.5)
.AsServiceProduct()
.ServiceProductSpecificMethods...()
和PackagedProduct調用AsPackagedProduct()而不是AsServiceProduct()等。你明白了。
我還沒有找到一個示例,顯示此最佳做法。只有最終構建返回相同類型的示例。
有什麼建議嗎?
您對此接口有一整套要求嗎?你是否在尋求幫助將他們組織成一個流暢的界面? –
什麼是建築師模式真的在這裏買你?你想解決什麼樣的問題? –
@GlennFerrieLive:我想知道如何打電話給AsServiceProduct()「通知」ProductBuilder上的Build方法,以實際創建具有特定屬性的ServiceProduct實例(由構建器上的後續方法調用提供,在AsServiceProduct()之後),而不是以最簡單形式的Product。我可以在AsServiceProduct方法中設置一個私有屬性,告訴構建者創建一個ServiceProduct而不是一個Product,但我認爲有比這更好的解決方案。 –