gpt4 book ai didi

domain-driven-design - 解决贫血领域模型示例

转载 作者:行者123 更新时间:2023-12-02 05:30:32 25 4
gpt4 key购买 nike

我正在审查可以优化抵押贷款计算工具设计的领域,主要是出于学习目的。在阅读贫血领域模型后,我对创建丰富模型产生了兴趣,并注意到我当前的实现可能存在贫血!这是伪代码中的当前实现:

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 对象主要用于对象之间的数据传输等。

以下是我正在考虑的一些修订选项:

  1. 从 MortgageCalculator 中删除 Mortgage 对象并使用 Mortgage纯粹作为 DTO 而计算器的方法采用参数(例如,计算月供(贷款金额、利率)。这将有助于将 MortgageCalculator 与 Mortgage 对象分离,但 Mortgage 仍然是一个贫血模型。
  2. 将这两个类合并为一个“丰富的”MortgageCalculator 模型,该模型包含业务逻辑(例如 calculateMonthlyPayment)和抵押属性(例如 loanAmount)。我的这里的问题是我不确定是否有必要计算器对象将其操作数保存为实例变量,但是它们会促进数据传输、存储并可能解决贫血问题?

我想知道理想的方法是什么,或者我是否忽略了重点?

最佳答案

也许 Mortgage 对象可以执行部分​​计算。例如,考虑一个计算订单总额的对象:

for (Line line : orderLines)
int total += line.getPrice() * line.getQuantity();

这被称为 Feature Envy , 并且可能是:

for (Line line : orderLines)
int total += line.calculateTotal();

关于domain-driven-design - 解决贫血领域模型示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12452102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com