0

我对 OOP 中的贫血域模型有点困惑。是一种普通的旧 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);
    }
}

这出现在Martin Fowler的AnemicDomainModel文章的末尾

通常,您在服务中发现的行为越多,您就越有可能剥夺自己从领域模型中获得的好处。如果您的所有逻辑都在服务中,那么您已经蒙蔽了自己。

这意味着什么?最好使用智能对象而不是智能服务。

4

1 回答 1

0

通常,您在服务中发现的行为越多,您就越有可能剥夺自己从领域模型中获得的好处。如果您的所有逻辑都在服务中,那么您已经蒙蔽了自己。

这意味着编写面向对象的代码,而不是作用于数据的过程代码。面向对象的代码意味着将概念建模成对象,这些对象知道自己的属性和行为,并且它们一起协作以表示对问题的有效解决方案。

使用恰好支持 OOP 的多范式语言并不意味着您正在编写面向对象的代码。

于 2015-08-03T06:44:38.787 回答