我有一些交易行项目,我需要从这些订单项生成未来的结算时间表。现在有四种不同类型的订单项,每种订单项都需要稍微不同的结算时间表生成逻辑。我希望将来有更多类型的订单项。
目前我有一个BillingScheduleGenerator类,它接受订单项列表,对订单项进行排序,从数据库中检索所需的配置信息,并为每组订单项触发正确的结算计划生成逻辑。
问题在于这门课变得越来越大。
我认为最好的解决方案是制作一系列类似的子类:
BillingScheduleGenerator
LineItemBillingScheduleGenerator extends BillingScheduleGenerator
PurchaseLineItemBillingScheduleGenerator extends LineItemBillingScheduleGenerator
CancellationLineItemBillingScheduleGenerator extends LineItemBillingScheduleGenerator
...
这样,更具体的订单项生成器可以共享更一般的订单项生成逻辑(按月分配,检索定价信息等),并且不需要共享的特定生成逻辑可以封装在小班。
因此,我现在正在努力解决的问题是:我在哪里放置对订单项进行排序并从数据库中检索配置信息的逻辑?
它应该存在于LineItemBillingScheduleGenerator超类中吗?这将允许调用者使用行项列表实例化LineItemBillingScheduleGenerator,调用单个方法,并接收返回的计费时间表列表。
是不是错了'一个超类来实例化并调用它的每个子类?
我应该将排序和查询逻辑放入服务方法吗?
答案 0 :(得分:0)
可以实例化超类并调用其子类。在Java中,每个类的默认父类是 Object class。默认情况下,每个类都扩展并继承此Object类的属性。另请阅读Upcasting and downcasting Inheritance。仔细阅读这些基础知识,您将对其工作原理有所了解。