业务驱动设计 Business Driven Design

本文是上一篇文章的续作

http://www.jdon.com/jivejdon/thread/43809

在传统领域模型中,BO被分散到各领域对象中去了,BO的职责似乎是为了完成领域对象所需要的功能,如下图


在普通的电子商务网站,如果用户注册流程Customer是一个Core Domain,那么BO就是为了“注册”服务的,比如初始化积分等。。。真的是这样么?用户注册可不能给网站带来任何收益的!

企业关心的是用户注册信息本身,比如个人爱好,手机号码等,将这些信息传入CRM系统进行数据挖掘,为用户提供感兴趣的商品这才是真正的业务。


Bussiness API : 为业务提供各种服务,如客户关系管理、进销存管理、财务管理等
Service Provider Interface : 服务所依赖的业务模块
Lookup : 通过反射或其他方式将业务模块的任务分发到各BO分别进行处理,处理完毕后再进行汇总,返回给SPI
BO : 单一职责,负责处理业务或业务需要的数据,通过DataMapper直接获取关联的实体
DataMapper : 使用Tag网络维护实体关系,返回BO需要的实体集合

关于以上模式的实现,可以参考本人上一篇文章中提到的KylinORM

参考文献:Jaroslav Tulach 著 Practical API Design
[该贴被gameboyLV于2012-03-10 13:27修改过]

不错,我个人发现这里BO好像和SOA视角比较一致,是从业务API出发的,参考:SOA和领域驱动设计


[该贴被banq于2012-03-10 15:10修改过]