我需要一些关于如何构建一个充当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,但我认为有比这更好的解决方案。 –