Я просматриваю области, где я могу оптимизировать дизайн своего инструмента расчета ипотеки, в основном для учебных целей. После прочтения анонимных доменных моделей я заинтересовался созданием Rich Models и заметил, что моя текущая реализация может иметь анемию! Вот текущая реализация в псевдокоде:Решающий пример модели аномального домена
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;
}
В настоящее время объект ипотечного служит в первую очередь для передачи данных между объектами и т.д.
Вот некоторые варианты пересмотра Я рассматривающие:
- Удалить Ипотечный объект из MortgageCalculator и использует Mortgage чисто как DTO, в то время как методы калькулятора принимают аргументы (например, calculateMonthlyPayment (loanAmount, interestRate). Это поможет с развязкой Ипотека Калькулятор с объекта Ипотека, но все равно будет Ипотека как анемичная модель.
- Объедините оба класса в одну «богатую» модель MortgageCalculator, которая содержит как бизнес-логику (например, расчетMonthlyPayment), так и свойства ипотеки (например, loanAmount). Мой вопрос заключается в том, что я не уверен, необходимо ли для объекта калькулятора хранить его операнды в качестве переменных экземпляра, но они облегчат передачу, хранение и, возможно, устранение анемии?
Мне интересно, какой будет идеальный подход, или если мне не хватает точки?