Jon*_*Jon 11 java dependency-injection cop apache-zest
我之前在阅读InfoQ关于面向复合编程的文章:
http://www.infoq.com/articles/Composite-Programming-Qi4j
我有兴趣了解是否有人正在使用(或已经使用过)Qi4j框架?
与使用传统的依赖注入框架(如Spring)将类连接在一起相比,它是如何比较的.从维护的角度来看,生成的对象图(基于mixins而不是类)更容易处理吗?
小智 9
好吧,我在一个项目中已经使用Qi4j大约一年了.一旦你习惯了域模型中mixins的强大功能,你就会想知道以前如何在没有它们的情况下进行管理.事实上,我认为创建域模型的POJO方法应该是过时的.它创建了系统不可维护的代码.因为mixin/composite模型是Qi4j的重要特性,而不是DI,所以在Java平台上确实没有任何比较.
至于Bozho的担忧:当谈到宣布mixins时,有两个不同的案例.在实体(即域模型)中,接口通常只有一个实现,并且实际上您希望主动避免出于维护和可读性原因而进行多次实现.所以我在界面中直接声明了实现.但是,它只是一个默认值,如果你愿意,它可以被复合覆盖.到目前为止,我从未发现需要这样做.
另一种情况是服务,这是完全不同的.对于许多情况,只有一个实现,因此在界面中声明实现也是相当不错的.但是,对于需要不同实现的服务的情况要多得多,因此对于这些情况,您只需在具体的复合类型声明中声明mixin.所以两种风格都是可能的,并且出于各种原因推荐.
至于铸造,能够铸造物体是一个奖励,而不是问题.如果你没有从一个角色转换到其他角色,那么你必须要有很大的创造性来解决它,这可能不会使你的代码变得更简单.