面向对象和充血/贫血模型

面向对象和是否使用充血模型,是两个概念,不存在冲突。

如果使用充血模型,你的代码读起来就好像:今天他来了,然后他死了。 – he.goto(Place,TrafficTool); he.died(DeadReason);

而贫血模型的话,读起来就像是:一辆大巴载着他来了,然后死神带走了他。 – bus.taketo(He,Place); death.takeaway(He);

“他”就是模型,在整个编程模型中怎么理解他至关重要,否则在开发团队里就存在混用的情况。用哪种模型完全取决于个人喜好。

一般充血模型比较适合逻辑不是很复杂,比如大多数都是单表,不存在复杂的关联的情况。贫血模型的使用范围比较广,用着也简单,但代码看起来多,而且读起来吞吞吐吐。毕竟充血模型需要在扩展时非常清楚合理地把行为定义到正确的模型上。