超类是否应该实例化并调用其子类?

时间:2017-07-24 09:54:39

标签: java oop object-oriented-analysis

我有一些交易行项目,我需要从这些订单项生成未来的结算时间表。现在有四种不同类型的订单项,每种订单项都需要稍​​微不同的结算时间表生成逻辑。我希望将来有更多类型的订单项。

目前我有一个BillingScheduleGenerator类,它接受订单项列表,对订单项进行排序,从数据库中检索所需的配置信息,并为每组订单项触发正确的结算计划生成逻辑。

问题在于这门课变得越来越大。

我认为最好的解决方案是制作一系列类似的子类:

BillingScheduleGenerator

LineItemBillingScheduleGenerator extends BillingScheduleGenerator

PurchaseLineItemBillingScheduleGenerator extends LineItemBillingScheduleGenerator 

CancellationLineItemBillingScheduleGenerator extends LineItemBillingScheduleGenerator 

...

这样,更具体的订单项生成器可以共享更一般的订单项生成逻辑(按月分配,检索定价信息等),并且不需要共享的特定生成逻辑可以封装在小班。

因此,我现在正在努力解决的问题是:我在哪里放置对订单项进行排序并从数据库中检索配置信息的逻辑?

它应该存在于LineItemBillingScheduleGenerator超类中吗?这将允许调用者使用行项列表实例化LineItemBillingScheduleGenerator,调用单个方法,并接收返回的计费时间表列表。

是不是错了'一个超类来实例化并调用它的每个子类?

我应该将排序和查询逻辑放入服务方法吗?

1 个答案:

答案 0 :(得分:0)

可以实例化超类并调用其子类。在Java中,每个类的默认父类是 Object class。默认情况下,每个类都扩展并继承此Object类的属性。另请阅读Upcasting and downcasting Inheritance。仔细阅读这些基础知识,您将对其工作原理有所了解。