Anemic Domain Model是一组智能服务和没有定义行为的愚蠢对象吗?

时间:2015-02-10 12:54:08

标签: oop anemic-domain-model

我对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文章末尾

  

通常,您在服务中找到的行为越多,就越多   可能你要剥夺自己域名的好处   模型。如果你的所有逻辑都在服务中,你就会失明。

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

1 个答案:

答案 0 :(得分:0)

  

通常,您在服务中找到的行为越多,就越多   可能你要剥夺自己域名的好处   模型。如果你的所有逻辑都在服务中,你就会失明。

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

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