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

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

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

简而言之  :

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

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

 

posted @   王若伊_恩赐解脱  阅读(2349)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)

点击右上角即可分享
微信分享提示