我正在审查可以优化我的抵押贷款计算工具设计的领域,主要用于学习目的。在阅读了贫血领域模型之后,我对创建丰富模型产生了兴趣,并注意到我当前的实现可能有贫血!这是伪代码中的当前实现:
class MortgageCalculator {
Mortgage mortgage; // mortgage object containing loanAmount, interest rate, etc.;
calculateMonthlyPayment(); // calculates monthly payments using mortgage object's properties
}
class Mortgage { // Anemic?
loanAmount;
interestRate;
}
目前 Mortgage 对象主要用于对象之间的数据传输等。
以下是我正在考虑的一些修订选项:
- 将 Mortgage 对象从 MortgageCalculator 中移除,并将 Mortgage 纯粹用作 DTO,而计算器的方法带有参数(例如,calculateMonthlyPayment(loanAmount,interestRate)。这将有助于将 MortgageCalculator 与 Mortgage 对象分离,但仍会将 Mortgage 作为贫血模型.
- 将这两个类合并为一个“丰富的” MortgageCalculator 模型,该模型包含业务逻辑(例如,calculateMonthlyPayment)和抵押属性(例如,loanAmount)。我在这里担心的是我不确定计算器对象是否有必要将其操作数作为实例变量保存,但它们会促进数据传输、存储并可能解决贫血问题?
我想知道理想的方法是什么,或者我是否错过了重点?