欢迎光临南京典乐信息科技有限公司
24小时:400-025-1949
繁體版
手机版
公司新闻
行业新闻
当前位置:首页 » 新闻中心 » 行业新闻

如何从业务到系统的“贫血”和“充血”

发表日期:2017-11-14 17:09:56文章编辑:浏览次数:247 标签:行业新闻    

“根据四色原型的分析方法,我们可以得出:某个“人”以图书借阅者的角色向图书馆借书。从这里我们可以得出三个角色:1)借阅者(Borrower);2)被借的图书(BorrowedBook);3)图书馆。”这样做有没有角色分析过度的嫌疑,我对角色(Role) ...

根据四色原型的分析方法,我们可以得出:某个以图书借阅者的角色向图书馆借书。从这里我们可以得出三个角色:1)借阅者(Borrower);2)被借的图书(BorrowedBook);3)图书馆。
这样做有没有角色分析过度的嫌疑,我对角色(Role)的理解是权限的集合,更多指的是人在某一上下文(Context)能做什么,毕竟在业务分析中说明人要干什么更自然些。
在这样一个相对简单的用例中,就要思考这么多角色的扮演者对象是谁?这的确是DCI问题的关键,但似乎很难和别人达成共识,比如说我就不认为图书卡是真正的借阅者角色的扮演者,我认为图书管理员才是,或者如楼主说的"很多人所认为的走进图书馆的那个人"!当然这只是一个例子,争论谁到底是借阅者角色都不重要,重要的是我们能在借书这一领域对于这些对象能达成一致吗?如果不能自然的达成一致,还需要大量的解释(见楼主的解释说明内容),对于个人对业务的分析或许是有用的(你可以用它来扩充对象的行为,并根据这些分析编写代码),对于领域模型构建则无用。
DCI只不过是把原本是充血模型中对象行为的设定延迟到了所谓的角色上,并没有从根本解决如何充血模型中对象行为设定的问题,实际上我认为这些行为也的确很难确定,类职责的分配是OOD中最大的问题,很难说有银弹,只能是个别问题个别分析,一劳永逸的想靠技术解决行不通。

从另一个角度来看,我倒是觉得贫血模型倒是能解决领域模型的构建,毕竟不包括行为只包括属性的对象还是相对稳定的,书也好,图书馆也好,图书卡也好,他们的属性是不会有太大变化的,即使有扩充起来也简单的多。用事务类封装行为,用服务(Services)包装事务,用人扮演的角色操作服务可能和分析出的业务用例更切合一些。我在读DDD时,始终认为Eric Evans的领域模型本意还是更贴近贫血模型(当然这是我个人的看法)。
对业务分析的越深入,可能越觉得自己对领域模型把握的越透彻,就很容易在对象中添加个性化的行为,尤其是写程序的人还进行业务分析,如果跳出来,让一个不懂编程的人(纯业务人员)或一个不懂业务的人(纯程序员)来看这个领域模型,他们都是很难理解的。领域模型一旦失去了沟通的意义,往往就僵化了,失去作用了,如果只是分析人员懂,那就可能出现偏差和错误,最终导致谁都不愿碰那个领域模型。
以上是个人的一些看法。
另外,贫血充血之争每隔一段时间都会重来。但有些讨论过多的关注技术层面,多在数据持久化、DTO、服务层方面纠结(当然这也很重要)。我更关心的是如何从业务到系统的贫血充血,而不是系统的实现技术。

专业服务:上海高端建站,上海网站制作,上海网站设计,上海网站制作公司

咨询电话:400-025-1949(7*24小时在线服务)

咨询QQ:260193150

公司网址:www.icanpk.com

本文地址:http://www.f5f6.com/news/detail_179.html

相关新闻

两Q友非法入侵他人网站推广赌博公司 上海医药官网等中招

两人利用木马信息侵入上海医药、世纪华联等单位官网串改链接帮助…

日期:2018-07-28 浏览次数:298

3月8日后上海长江二桥车道封闭维护 为期22天

为保障路桥结构和交通通行安全,经市政府批准,上海长江第二大桥…

日期:2018-03-08 浏览次数:281

怎样解决企业网站没有客户咨询的问题?

我们都知道如今是互联网的时代,传统的线下业务已经满足不了企业…

日期:2018-03-06 浏览次数:235

房地产税还有2年到达战场,3千多上海人涌向了河西...

关注两会3月4日的人大新闻发布会上,针对房地产税,发言人张业…

日期:2018-03-06 浏览次数:133

上海仙林汽配城内一物流公司卷款跑路

3月5日,有市民反映,上海仙林汽配城内的一家物流公司突然跑路…

日期:2018-03-06 浏览次数:106

关于我们
技术支持
联系我们
南京典乐科技
客服电话:400-025-1949 (工作日9:00~18:00)
项目经理:138-519-41123
咨询 Q Q:260193150
公司地址:上海中华路420号江苏省科技中心5层
客服QQ
获取报价
联系电话
400-025-1949
返回顶部