对象设计中的:贫血模式和充血模式

 其实贫血设计模式和  充血设计模式在称呼上 有点炒作之嫌

这两个概念其实在很早以前,大家开始接受OO思想的时候 就已经开始争论的一个话题

简而言之  :

贫血模式  就是 一个object 中 内部的定义  只有字段和属性,以及少量关于这些字段  增删改查的方法,没有具体的业务逻辑,有点struct 的感觉。所以很多人称贫血模式的对象不算做对象,只能称之为数据结构。其实我个人持中立意见,首先在很多时候一个对象我们只关注他的属性,并不关心他的具体业务方法,比如商品。我们往往是通过订单的方法来控制商品的生命周期。另外一方面贫血模式又有点违背oo的思想。因为oo的本意是触发模式,就是发生了什么,对这个object产生了影响,随之这个object 会进行哪些行为。这一点贫血模式基本上都是将其封装到 业务逻辑层的方法中进行统一的处理的。

充血模式:相对于贫血模式,就是将对象的业务方法也加在对象的类中。让一个对象可以有能力做很多本来属于他的职能范围内的东西。可以说是将对象注入了灵魂。所以更符合oo 的味道。记得自己在刚做iwms 时,很不适应,其中很重要的一点就是博然等人当时引入的富对象模式,就是将大量的static 方法加载到对象之中,让对象在bll层可以直接运行自身的静态方法。这一点也是在后来的学习当中认识到的,当时并不觉得这样写的好处。后来看了博然的简历,看到了充血模式,再上网查找这些,才发现了其中意义,此处感谢博然。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注