关于jdon DCI RoleAssigner的问题

supernavy 13-09-09

下面的代码来自com.jdon.domain.dci.RoleAssigner.java

public Object assign(Object datamodel, Object role) {
Class[] inters = role.getClass().getInterfaces();
if (inters == null || inters.length == 0) {
Debug.logError(
"[JdonFramework] role:" + role.getClass() + " should implements a interface when be assigned to data:" + datamodel.getClass(),
module);
return null;
}

if (datamodel.getClass().isAnnotationPresent(Model.class))
assignDomainEvents(datamodel);

if (role.getClass().isAnnotationPresent(Introduce.class)) {
role = modelAdvisor.createProxy(role);
}

return role;
}

这里的datamodel 和 role之间并没有建立任何的绑定。按照DCI的思想,返回的应该是一个混合了数据与行为的对象,但是这里返回的确实一个没有任何数据的对象,这怎么理解呢?
[该贴被admin于2013-09-09 16:49修改过]

banq
2013-09-09 16:50

关键在这一句:
if (datamodel.getClass().isAnnotationPresent(Model.class))
assignDomainEvents(datamodel);

将事件交互行为注入了datamodel,至于为何返回role,这个方法经过重构,可能是考虑兼容性等问题。