Object 共享域逻辑?

Object 共享域逻辑?,object,logic,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(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、 有没有一种方法可以在不强制所有继承对象使用相同名称的情况下重载

在这种情况下,抽象基类听起来是最好的选择。当然,这一切都取决于这些物品的共同行为。在不知道更多的情况下,我猜所有这些订单项目都有名称和价格,例如,在未来,您可能会添加更多常见的东西

如果没有包含Name和Price属性的共享基类,那么实现CreateOrderTicket方法时可能会遇到问题,该方法会获取包含多种订单的列表

此外,我认为从抽象基类继承不会有那么高的成本,因为从技术上讲,对象已经从对象基类派生。(尽管我不认为这完全等同于自定义基类。)


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

在这种情况下,抽象基类听起来是最好的选择。当然,这一切都取决于这些物品的共同行为。在不知道更多的情况下,我猜所有这些订单项目都有名称和价格,例如,在未来,您可能会添加更多常见的东西

如果没有包含Name和Price属性的共享基类,那么实现CreateOrderTicket方法时可能会遇到问题,该方法会获取包含多种订单的列表

此外,我认为从抽象基类继承不会有那么高的成本,因为从技术上讲,对象已经从对象基类派生。(尽管我不认为这完全等同于自定义基类。)


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

是的,这是我的第一个想法,但我倾向于避开基类,更倾向于接口。但要实现共享功能,我看不到其他方法。接口。。在基类的多个位置实现它。。重载或包装受保护的属性(用于不同的名称)“逻辑服务”。。。仍然需要了解引入了哪些参数,因此仍然需要一个抽象接口或基类。我希望其他人能有办法决定什么时候一种方法是最好的,什么时候可以有一个基类(因为你只能有一个)。哦,我应该补充一下重载和添加泛型的原因,这样当你从共享函数以外的任何地方调用这个类时,你就不局限于接口了。为了避免演员阵容。。跨多个类共享一个函数似乎有很多事情要做。是的,这是我的第一个想法,但是我倾向于避开基类,更倾向于接口。但要实现共享功能,我看不到其他方法。接口。。在基类的多个位置实现它。。重载或包装受保护的属性(用于不同的名称)“逻辑服务”。。。仍然需要了解引入了哪些参数,因此仍然需要一个抽象接口或基类。我希望其他人能有办法决定什么时候一种方法是最好的,什么时候可以有一个基类(因为你只能有一个)。哦,我应该补充一下重载和添加泛型的原因,这样当你从共享函数以外的任何地方调用这个类时,你就不局限于接口了。为了避免演员阵容。。在多个类中共享一个函数似乎有很多事情要做