关于DDD概念的一些理解和困惑,烦劳Banq点拨

08-12-25 pluto4596
         

值对象 value object
在开发时产生的一些特定要求的对象,如多个实体对象与多个属性(如一个USER,并加上验证码组成一个值对象)

实体对象(持久化对象) persistent object
基本上对应数据库进行持久化而产生的对象,与数据库表结构基本一一对应

域模型对象
一些在分析设计阶段被抽离出来的问题本质,基本上所有的操作,业务逻辑都是针对域模型展开的。域模型中需要有一些基本对本身的简单操作

dao层
封装了底层的数据库操作

服务层
封装了业务逻辑操作,调用dao层的方法

仓库层
针对域模型的管理,如对域模型的增删等(在学习jj3的代码时,在服务和仓库中都有dao对象的存在,于是对于仓库的作用不是非常清楚)

接下来是我个人的一些理解,难免有错,还望指正:
1.域对象模型与值对象还是有交集,因为需求中的模型与最后需要持久化的对象还是有很多相似之处的
2.服务层相当于一个业务操作+业务控制层?
4.感觉域模型对象与值对象和实体对象有重合之处,值对象用于前台请求向后台发送数据,实体对象用于控制层处理后持久化,域对象模型感觉上是一个重要的部分,实际中却不知如何准确的应用
3.系统整个流程如下:
前台请求->action等控制器->服务层->dao->数据库
(域模型?)值,实体对象贯穿其中

         

pluto4596
2008-12-26 10:31

今天早上又去理解了四色模型的一些概念,四色中
moment-interval
role
catalog-entry-like description
party, place or thing
在后面附上的一张示例说明中,我的理解是这样的
四色模型用于抽象出业务中涉及到的类模型,MI中反映的是事件的实体,以事件的实体为驱动,追溯出涉及该事件的角色role,继续得出构成该角色的部件part,从part中再次获得归属的种类description
这样看来 四色算是以事件为驱动的么

pluto4596
2008-12-26 10:53

我自问自答吧
看了一些回帖后,有意见是说仓库是针对dao的浅层封装,其中包含业务的逻辑验证,所以说仓库层只是对dao返回的数据进行浅加工和验证,真正的核心业务逻辑并不在其中而是由服务层来调用

不知道是不是这样理解

IceQi
2008-12-26 21:45

首先4色图只是方法不是目的,只是帮助我们获得一个良好的思考方式。软件中遇到的任何问题都可以按照真实世界中的情况分析,这个结果也必然可以从4色图中导出。软件只能是描述现实世界的真实状况,这是唯一合理的结果。

对于“服务层”lz的理解还是有些浅了,他不是薄薄一层而是非常厚重的,系统中的服务层在实现的过程中都是经过多次的细化得到的,所以repository也是其中的一层。每一层描述业务的多少、实现的复杂简单,都是根据事情情况确定的,没有一个必然的标准。

pluto4596
2008-12-27 16:10

感谢IceQi大大的赐教

4色图是方法而不是目的,我们通过4色图对软件进行分析,最终以一个4色的形式表现我们对业务的理解,并构成类图,是这样的么

至于服务层的概念,是指具体包含什么内容,如何具体分析还是要根据实际情况而定的吧

4Go 1 2 3 4 下一页