tangxuehua
2011-07-14 20:58

现在基本明白扮演一词的含义了.

1)对于一个活动或过程的参与者,我能很形象的理解为角色,如警察抓小偷场景中的:警察与小偷都是两个角色,都由人扮演;

2)对于一种关系的构成者,我也能很好的理解为角色,如夫妻关系中的丈夫和妻子,他们都由人扮演;

但是对象除了可以构成关系和参与活动外,可能还会有其他情况,比如借书场景中,图书馆只是个地点;或者在人民大会堂举行的中国达人秀节目,人民大会堂也只是个地点而已;按照flyingrobot的说法,因为场景中的任何对象都应该以某种角色来理解,那么图书馆这个对象是否应该理解为"借书发生地"角色?人民大会堂是否该理解为"表演舞台"角色?

SpeedVan
2011-07-15 08:40

2011年07月14日 20:58 "@tangxuehua"的内容
那么图书馆这个对象是否应该理解为"借书发生地"角色?人民大会堂是否该理解为"表演舞台"角色? ...

这么想吧:“跳舞”是场景,还是“在舞台上跳舞”是场景?还是两者都是?

tangxuehua
2011-07-15 09:17

场景就是:中国达人在中国人民大会堂秀,它包含:中国大人、观众、评为、现场工作人员、人民大会堂、秀;其中中国达人、观众、评为、现场工作人员都是角色,人民大会堂是一个表演舞台,而秀则是活动,如果你吧秀理解为场景,那它只是一个狭义的场景,说狭义是因为秀不能说明其他的很多问题,完整的场景就是:中国达人在中国人民大会堂秀;

所以一个完整一点的抽象一点的场景表示就是:各种对象扮演各种角色在某个地方进行活动,当然有时我们会忽略地点,那就是各种对象扮演各种角色进行活动,而这也就是四色原型的核心,其实我们小学语文课本中早已给我们上过这个思想了:人物、地点、事件,呵呵。

所以,你觉得场景是什么呢?另外再问一句:你们所说的场景仅仅包含领域相关的东西吗?有没有包含事务控制,错误记录,日志处理等领域之外的技术层面的应用层面的东西呢?如果不包含,那么它和DDD中的领域服务有什么本质区别吗?在我看来仅仅多了一个角色的概念而已。

[该贴被tangxuehua于2011-07-15 09:19修改过]

SpeedVan
2011-07-15 11:49

2011年07月15日 09:17 "@tangxuehua"的内容
所以,你觉得场景是什么呢 ...

场景跟场地,还真的是有区别。场地只考虑地点,而场景,除了场地外,还考虑情景。把“各种对象扮演各种角色在某个地方进行活动”后面改为“进行某种活动”。Context不同与Place,建立场景主要是组织情景,而不是去布置场地。所以为什么我们在谈论场景时,都会取谓词来描述。

纯领域描述不包含其他东西,它关键是建立领域模型,而技术应该围绕模型来转。可以通过框架控制,或者通过自动注入或切入技术,如IOC、AOP等。与领域服务最本质的区别:在原DDD上,逻辑是尽量放到模型中(理解聚合根与实体的区别),而放到哪都不适合的就放到服务中,可见原DDD跟DCI的切分方式有很大不同,但某些概念上是相互促进的。

flyingrobot
2011-07-15 13:05

2011年07月15日 11:49 "@tangxuehua"的内容
按照flyingrobot的说法,因为场景中的任何对象都应该以某种角色来理解,那么图书馆这个对象是否应该理解为"借书发生地"角色?人民大会堂是否该理解为"表演舞台"角色? ...

我在前面讨论中,都是使用关系或过程/活动,而避免使用“场景”,因为它们更明确、容易确定……我不会说任何对象都应该以某种角色来理解,特别不会针对场景说——最多,说可以以某种角色来理解。这个必要性,取决于你拿它(这些模型)做什么,怎么做。

回到“角色”上,还是要强调,最基本的理解,它是关系的构成。即使在过程中,它们实质上也会归结为对象之间的相互作用关系。

另外一点,就是动态性。这也是许多时候我们将角色凸显出来,甚至实体化的缘由之一。比如:打篮球。进攻者与防守者、传球者、接球者、断球者……一名球员会扮演多种角色并不断转换。

补充:关于场地作为角色。任何实体都可以作为角色。作为特定角色时,你是将它当作一个整体来看的。比如借书例子中,最简单的方式,当然就是把借与还,看作“图书馆”和“读者”之间的过程(联系),所以,在借阅过程或借阅关系中的基本角色是图书馆与读者。更复杂一点,可能变成(图书室,读者),而图书馆此时就成为图书室的拥有者角色。只要抓住了关系这个实质,神马都是浮云。

[该贴被flyingrobot于2011-07-15 13:12修改过]