主に学習目的で、住宅ローン計算ツールの設計を最適化できる領域を検討しています。貧血ドメインモデルについて読んだ後、リッチモデルの作成に興味を持ち、現在の実装に貧血がある可能性があることに気づきました。擬似コードの現在の実装は次のとおりです。
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として使用します(例:calculateMonthlyPayment(loanAmount、interestRate)。これは、MortgageCalculatorをMortgageオブジェクトから分離するのに役立ちますが、Mortgageはアネミックモデルとして使用されます。 。
- 両方のクラスを1つの「豊富な」MortgageCalculatorモデルにマージします。このモデルには、ビジネスロジック(例:calculateMonthlyPayment)と住宅ローンのプロパティ(例:loanAmount)の両方が含まれています。ここでの私の懸念は、電卓オブジェクトがそのオペランドをインスタンス変数として保持する必要があるかどうかわからないことですが、それらはデータの転送、保存を容易にし、おそらく貧血を解決しますか?
私は理想的なアプローチは何であるか、または私が要点を逃しているかどうか疑問に思っていますか?