假设我有两个osgi包。每个包中都有mvc模式。查看 - 摆动JFrame。在这两个组件之间进行通信的最佳实践是什么?我认为有两种方式:
1)在服务中我们做服务功能,在这个功能中我们称之为控制器功能。像这样的东西
Class MyService {
public void readSomething(){
controller.readAction();
}
}
2)或者服务可以返回控制器,而另一个组件将使用该外部控制器。这样的事情:
Class MyService {
public Controller getController(){
return controller;
}
}
我想知道其他人使用和思考的内容。
答案 0 :(得分:0)
一般来说,这取决于: - )。
我假设您有两个组件A
和B
,而组件A
需要通知组件B
某些内容,或者换句话说,组件{{1}对组件B
中发生的事情感兴趣。
组件合作的一种方法是使用 A
服务;组件A为所有可能的情况发出事件,组件B已为这些事件注册了EventAdmin
和适当的过滤器。额外奖励:组件EventHandler
可以指定同步/异步处理程序执行,并且可能会有多个组件在没有任何额外开销的情况下得到通知。如果捆绑激活器处理所有连线,A
和A
都不需要服务甚至是对象。
另一种方法是使用B
:组件Declarative Services
和A
是对象,并且您已定义了一个接口B
,用于指定{{1}上的有效操作} {以及IB
实现的。 B
被标记为至少需要一个B
,DS服务将实例化这两个并使用适当的IB引用调用A上的方法。然后,A通常可以调用IB的方法。
作为DS的简化,您可以使用普通服务:A不是服务,但每次需要在IB上调用方法时都会找到IB的实例。
最后但并非最不重要的是,A
可以使用依赖注入实例化复杂对象图,包括服务代理,我从未使用过,也不觉得我可以发表评论...