关于jdon DCI RoleAssigner的问题

13-09-09 supernavy

下面的代码来自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;
	}
<p>

这里的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,这个方法经过重构,可能是考虑兼容性等问题。