Java 良好的面向对象实践+;为了面向对象,我们应该在子类中实现复杂的逻辑吗?
我的员工分为两类(国内和国际)。 我有另一个类退款,用于退款员工。 我有一个叫做“银行账户”的课程,用于退款课程 现在,我的即时设计如下所示: 员工界面,具有国内和国际两个子类型 退款类在构造函数中接收银行 退款类的一个粗略伪码Java 良好的面向对象实践+;为了面向对象,我们应该在子类中实现复杂的逻辑吗?,java,oop,Java,Oop,我的员工分为两类(国内和国际)。 我有另一个类退款,用于退款员工。 我有一个叫做“银行账户”的课程,用于退款课程 现在,我的即时设计如下所示: 员工界面,具有国内和国际两个子类型 退款类在构造函数中接收银行 退款类的一个粗略伪码 Class Refund Refund( bank account ) Public class Refund( employee ) { If (employee is domestic) { Pay t
Class Refund
Refund( bank account )
Public class Refund( employee ) {
If (employee is domestic) {
Pay to bank
Account for taxes
} else {
do currency conversion
Pay to bank
Call some 3rd party to do taxation
}
}
}
现在我的问题是:
为了保持OO设计并使其可扩展,而不将功能转移到Employee类,也许您只需向Employee类添加属性,例如Employee类型(国内/国际)以及退款类型,然后,您可以使用现在可扩展的退款类进行特定类型的退款?员工->账户[],类型、货币->条目[]
员工->账户[]与货币->分录[]与类型 您可以将每个帐户用于类型(退款)和货币,或者最好仅为每个货币和具有类型(退款)的条目创建一个帐户
剩下的应该由服务人员来完成 在我简单地阅读了你的问题之后,我认为你寻求的是双重派遣。
见e。g 本教程的第一部分将介绍更好的模板模式,它允许您实现一个算法,并允许子类进行自定义工作。在这里,您可以为国内类设置一个
退款,为国际
设置一个退款,以及作为其父类的退款
类。然后,员工有一个类型为退款的属性。