QI4J中关于entity的疑问

12-01-31 lovejdon
QI4J中推崇的类已死,接口万岁确实很不错,个人对entity的理解是这样的;

QI4J提出的OOP中我们说的entity基本都是贫血模型,只是简单的属性和GET还有SET方法,反应不了领域的真正意义出来,都是简单的数据载体,在QI4J中得做法是把领域的行为或者称作ROLE以Interface的形式展示出来,然后我们的领域extends这些接口,这样就赋予了领域相应的role,这些role的职责也就是Interface中的方法,领域中的属性单独提出来对应的接口。在QI4J应用的builder里面对属性进行赋值,在客户端调用的时候,只是对方法调用,而状态的东西都是私有的,客户端不可见的。这样也就让实体在领域中丰富起来了.不知道这样的理解是否正确。还有一点不是特别明确的是,qi4j说的private mixin究竟是何意,还有一种generic mixin。

              

3
banq
2012-01-31 12:20
2012年01月31日 11:09 "@lovejdon"的内容
应用的builder里面对属性 ...

可以这么理解,实质是一种DCI实现,如同Spring是DI依赖注入和AOP实现一样,你可以加入其google的一个讨论组:https://groups.google.com/group/object-composition

从我个人来看,目前认为Qi4j比较琐碎,复杂了些,当然这是因为其灵活和强大带来的。

Qi4j使用Composition组合体和碎片来表达其组合概念,如果用DDD的聚合来映射Mapping,那么DDD的聚合应该对应其Composition,碎片Fragments是聚合内的一些对象,不只是实体或值对象,也可能是接口,这些接口是表达的是对象职责(职责驱动开发)。

Private Mixins和Public mixins是针对DDD的聚合边界内外而言,Pub一般用于聚合根,可被客户端直接访问。

使用Qi4j,有些像调鸡尾酒,开发人员比较注重在Mixin上,而JdonFramework是通过事件来实现DCI,开发人员能够比较注重业务上,当然这是有我个人偏见其中,JdonFramework的Mixin能力相对弱。

猜你喜欢