1

举个例子:

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 基类或接口。

帮助!!:)

ps 有没有办法在不强制所有继承对象使用相同名称的情况下进行重载?

4

1 回答 1

1

在这种情况下,抽象基类听起来是最好的选择。当然,这一切都取决于这些项目有什么样的共享行为。在不了解更多信息的情况下,我猜所有这些订单商品都有名称和价格——将来您可能会添加更多常见的东西。

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

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

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

于 2009-04-26T00:36:27.087 回答