充血模型与贫血模型的再论

充血模型有什么实际的好处么? 难道就为了好听 完美(数据和行为统一)?

过于复杂的需求还是用贫血 ,一般需求用充血 ,这样做正确吗?

项目中用的更多的哪个模型呢。

比较困惑。。

当然一直应该用充血模型,不能用贫血模型。

但不是说,将模型相关度不是很高的所有方法行为都放在模型中,要学会使用规格 代理模式 等进行切割。让模型只包含那些本质的行为,比如对自身结构的改变或聚合子对象的操作等等。

最核心的问题是:一个确定的对象到底需要什么。以这个作为标准,比需要的少了就贫血了,比需要的多了就。。。。垃圾了。最好的情况是可以直接骑在这条标准线上,要依靠个人的功力了。

经常见这种问题,其他网站上也在争这个。尽量能充血就充血吧,人没有血就不能活,对象也一样。但如果面对旧系统比较多(比如我),在改造的时候往往因为第三方或者一些特殊原因无法进行充血,实在不行那就贫血,但依然尽量通过一些其他方式给领域去填充血。

class Book{
void turn(){}
}
class ReadNerve{
Book book;
void turn(){}
}
turn是Book的血还是Nerve的血?这个问题要追究书有没有翻页能力。我认为没有,Book+Never才是有血模型。单独拿出来一本书或一条神经在turn这个问题里都没什么价值。

@freebox
说的对
估计很多认可能没有分清楚究竟什么是贫血模型
banq也一直反复地说这个问题,好像也没什么作用.