Jdon框架对DCI实现的疑惑。

15-07-31 xujeon
         

从JdonFramework.doc文档中看到如下描述:

我们创建一个上下文Context, 在其中通过RoleAssigner将将角色接口注入到领域对象中中。

角色分配场景下

数据模型MyModel //没有@Inject字段

RoleAssigner可以手工对任何一个模型对象从外部进行事件注入或角色分配

MyModel myModel = new MyModel();

RepositoryRoleIF r = (RepositoryRoleIF) roleAssigner.assign(myModel, new RepositoryRole());

r.save(myModel);

----

看了RoleAssigner的源码之后,

发现assign这个方法,只做了两件事情:

1.assignDomainEvents(datamodel);

2.role = modelAdvisor.createProxy(role);

1->对有@Inject字段的datamodel进行实现类注入。(对于没有@Inject字段的datamodel则什么都没做!)

2->对Role类进行代理封装(实现AOP)。

----

那从源码的角度来看,角色对象和数据模型并没有发生什么关系。

并没有创建出一个Mix了数据模型和当前角色行为的类。

那【通过RoleAssigner从外部进行角色分配】,这句话应该怎么理解呢?

         

banq
2015-08-01 13:49

因为语言的限制,DCI实现不是真正到位。

xujeon
2015-08-01 14:11

谢谢,明白了。

感觉类似Scala之类的语言,更加适合这类框架构想的实现。