共享域逻辑?

时间:2009-04-25 23:04:10

标签: object logic

以例如:

CreateOrderTicket(ByVal items As List(Of OrderItems)) As String

你会把这种逻辑放在哪里:

CreateOrder should generate a simple list ( i.e. Item Name - Item Price )
PizzaOrderItem
SaladBarOrderItem
BarOrderItem

你会建议: 使用共享属性对名为CreateOrderTicket

的方法的抽象类/接口进行公共重构

或者,

创建公开CreateOrderTicket的公共服务

我们显然不想要三个createOrderTicket方法,但添加方法,继承,重载和使用泛型似乎只是抽象一个行为的高成本..

假设为了一个简单的例子,(目前)没有OrderItem基类或接口..

帮助!! :)

P.S。有没有办法超载而不强制所有继承对象使用相同的名称?

1 个答案:

答案 0 :(得分:1)

抽象基类听起来像是这种情况下的最佳选择。当然,这完全取决于这些项目的共享行为。如果不知道更多,我猜所有这些订单商品都有名称和价格 - 例如,将来您可能会添加更多常见的东西。

如果没有包含Name和Price属性的共享基类,您可能无法实现CreateOrderTicket方法,该方法采用包含多种订单的列表。

此外,我不认为从抽象基类继承将是高成本,因为从技术上讲,对象已经从Object基类派生。 (虽然我不认为这完全等同于自定义基类。)

VB.Net可以使用与接口中指定的名称不同的名称从接口实现方法,但不会认为覆盖抽象功能也是如此。