重新认识“对象”和“行为”之间的关系
DDD中强调“领域对象是拥有行为的”。这句话我觉得说法是正确的,但是其做法难道就是“在领域对象里写方法”这么简单吗?
我们常说“类应该具有生命的”,但我不认为“把方法写到类里就会让类具有生命了”,因为"把简单地把方法写到类里,其最终也只是让类变成了一潭死水,是经不起风浪的,是无法变成湖泊和海洋的”。类不会无缘无故产生行为,类能够产生行为一定是在一定的场景下发生的。在我看来,“简单地把方法写进类里是无法描述多(复杂)场景下的类的行为的”。如果有人说在他的项目里那样做没问题,那我只能说他的项目(场景)还不够复杂。
其实“贫血对象”和“充血对象”都是极端的做法,而问题的关键是“类如何合理而自然地拥有行为”。在我看来,我们只能在“贫血对象”和“充血对象”之间达成一种平衡。如何把“场景”更好地融入DDD还有没公论,但我想“类合理而自然地拥有行为”应该是一条准则。
[该贴被flyzb于2012-07-15 17:09修改过]