Является ли Anemic Domain Model набором интеллектуальных сервисов и глупых объектов без определенного поведения?
Я немного запутался в том, что такое анемичная модель предметной области в ООП. Является своего рода набором простого старого объекта X (где X обозначает язык, который вы предпочитаете), без поведения (и обязанностей).
class AnemicDomainClass {
private $property;
public function getProperty() {
return $this->property;
}
public function setProperty($property) {
$this->property = $property;
}
}
... где вся логика внутри некоторых служб?
class SomeStuffService {
public static function doSomething(AnemicDomainClass $class) {
$class->setProperty(42);
}
}
Это появляется в конце статьи AnemicDomainModel Мартина Фаулера
В общем, чем больше поведения вы обнаружите в сервисах, тем больше вероятность того, что вы лишите себя преимуществ доменной модели. Если вся ваша логика в услугах, вы ограбили себя вслепую.
Это значит что? Лучше отдавать предпочтение смарт-объектам, а не смарт-сервисам.
1 ответ
В общем, чем больше поведения вы обнаружите в сервисах, тем больше вероятность того, что вы лишите себя преимуществ доменной модели. Если вся ваша логика в услугах, вы ограбили себя вслепую.
Это означает написание объектно-ориентированного кода вместо процедурного кода, действующего на данные. Объектно-ориентированный код означает моделирование концепций в объекты, которые знают свои собственные атрибуты и поведение и которые взаимодействуют друг с другом, чтобы представить работающее решение проблемы.
Использование мультипарадигмального языка, который поддерживает OOP, не означает, что вы пишете объектно-ориентированный код.