OSGi服务和MVC模式的最佳实践

时间:2014-04-29 18:05:59

标签: java swing java-ee design-patterns osgi

假设我有两个osgi包。每个包中都有mvc模式。查看 - 摆动JFrame。在这两个组件之间进行通信的最佳实践是什么?我认为有两种方式:

1)在服务中我们做服务功能,在这个功能中我们称之为控制器功能。像这样的东西

Class MyService {
    public void readSomething(){
      controller.readAction();
    }
}

2)或者服务可以返回控制器,而另一个组件将使用该外部控制器。这样的事情:

Class MyService {
    public Controller getController(){
      return controller;
    }
}

我想知道其他人使用和思考的内容。

1 个答案:

答案 0 :(得分:0)

一般来说,这取决于: - )。

我假设您有两个组件AB,而组件A需要通知组件B某些内容,或者换句话说,组件{{1}对组件B中发生的事情感兴趣。

组件合作的一种方法是使用 A 服务;组件A为所有可能的情况发出事件,组件B已为这些事件注册了EventAdmin和适当的过滤器。额外奖励:组件EventHandler可以指定同步/异步处理程序执行,并且可能会有多个组件在没有任何额外开销的情况下得到通知。如果捆绑激活器处理所有连线,AA都不需要服务甚至是对象。

另一种方法是使用B:组件Declarative ServicesA是对象,并且您已定义了一个接口B,用于指定{{1}上的有效操作} {以及IB实现的。 B被标记为至少需要一个B,DS服务将实例化这两个并使用适当的IB引用调用A上的方法。然后,A通常可以调用IB的方法。

作为DS的简化,您可以使用普通服务:A不是服务,但每次需要在IB上调用方法时都会找到IB的实例。

最后但并非最不重要的是,A可以使用依赖注入实例化复杂对象图,包括服务代理,我从未使用过,也不觉得我可以发表评论...

相关问题