DCI中角色对象中属性问题

在采用DCI进行架构设计的项目中,具体的角色扮演对象中是否存在属性呢?或者只存在具体的方法吗?如果存在属性,那在使用具体技术方案(比如Qi4j)时如何将该属性一同注入到场景对象中呢?

2014-01-25 01:32 "@wilsonp"的内容
具体的角色扮演对象中是否存在属性呢 ...

我认为不应该有属性,属性都在data model里面。

那相当于所有的属性都事先在实体类中定义好,只是修改这些在特定场景的属性的方法才定义在角色类中,这样理解对吗?因为context中的方法只是调用场景角色扮演对象的方法来实现场景逻辑

2014-01-25 11:21 "@wilsonp"的内容
只是修改这些在特定场景的属性的方法 ...

如果这些属性在运行时需要修改,就不能称为属性,而是状态,两者都表现为实体的对象字段,意义完全不同,属性是指对象,具有不可变性,一旦构成不再改变,而状态是可变的。可变的状态是否和不变的属性不一定都要在一个实体中定义,这要根据业务需求。

多谢banq的回答,之前我对属性和状态的关系确实没有分清楚。但还是有一点不是很好区别,比如一个球队当前所处的联赛级别(比如甲级和乙级),那表示这个球队的级别时,是属性还是状态呢?如果是属性,但这个是可变的,那如果作为状态的话,那又是在哪个角色扮演对象中呢,“参加比赛的球队”角色吗?但即便是不参加比赛,该球队一样也会有级别这个属性。有时候确实不好区分对象的属性和角色!
[该贴被wilsonp于2014-01-25 22:01修改过]

2014-01-25 21:39 "@wilsonp"的内容
有时候确实不好区分对象的属性和角色! ...

从输入输出角度,场景的输入是不变的属性,输出的是状态。

如果当前比赛场景,比赛的胜负结果会影响到级别提升与否,那么是状态,一旦进入高级别新的比赛场景,又是属性。