请教banq大哥,领域模型的设计

07-08-20 sifeng618435
    

读过领域驱动设计这本书的

banq大哥也在这里拿出了不少让大家学习的关于DDD的文章

就领域模型而言,有些还是不太明白

把领域层分解成:实体+值对象+服务

实体:

实体是为了查找和匹配对象的,所以要留下最关键的特征,

保证其唯一性,以及和这些关键特征相关的操作。

值对象:

值对象我就不大明白。

个对象代表了领域的某种描述性特征,且没有概念性的标识

值对象是不可变的,不要给它任何标识

这样是不是说“这个值对象是系统级别的呢,和静态变量的用途一样”

那么我有些迷惑的是实体和值对象的关系。我的理解是组合关系

服务:

1.与领域概念相关的操作行为、但不是实体和值对象中固有的部分。

2.接口根据领域模型中其他元素定义

3.操作是无状态的。

书上是这样说的,把应用服务接口抽象出来固然是好。

这样的话,如果服务和这些模型不是同一个设计者设计的话会成为开发人员之间增加阻力。

那我还有一些不明白的地方,在其他的域模型设计过程中都会包括一些和模型

相关的状态,这些状态的改变就设计成为了模型的行为。

而在DDD的领域模型中,我就不太明白怎么去设计这些有状态的特征,应该怎么去设计

才能使领域模型体现更高的价值。banq大哥指点一下。

谢谢~

    

banq
2007-08-20 18:19

看了有很多不明白的地方,这是自然的,我一下子也不知如何回答,可能回答后你也不定明白,关键是你需要实战,需要依据这些模型到你的具体项目。

关于状态等我在下面文章有描述,希望对你理解有帮助:

http://www.jdon.com/mda/ddd.html

Evans DDD理解不需要软件背景,而且思考层次比软件技术高,所以,你不要把你的软件技术什么静态变量等往上靠,没有类比性的。