【发布时间】:2012-09-17 01:17:17
【问题描述】:
我正在审查可以优化我的抵押贷款计算工具设计的领域,主要用于学习目的。在阅读了贫血领域模型之后,我对创建丰富模型产生了兴趣,并注意到我当前的实现可能有贫血!这是当前的伪代码实现:
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 对象主要用于对象之间的数据传输等。
以下是我正在考虑的一些修订选项:
- 从 MortgageCalculator 中移除 Mortgage 对象并使用 Mortgage 纯粹作为 DTO,而计算器的方法接受参数(例如, 计算每月付款(贷款金额,利率)。这将有助于将 MortgageCalculator 与 Mortgage 对象分离,但仍会将 Mortgage 作为一个贫血模型。
- 将这两个类合并为一个“丰富”的 MortgageCalculator 模型,该模型包含业务逻辑(例如,calculateMonthlyPayment)和抵押属性(例如,loanAmount)。我的 这里担心的是我不确定是否有必要 计算器对象将其操作数作为实例变量保存,但是 它们会促进数据传输、存储,或许还能解决贫血问题?
我想知道理想的方法是什么,或者我是否错过了重点?
【问题讨论】:
标签: domain-driven-design anemic-domain-model