我认为我在一起使用 OSGi 服务 + DS 时走在正确的轨道上,但是,我真的很想滥用它。要么,要么它只是纯粹的真棒。(两者仍然是可能的)。
所以让我们想象一下下面的应用程序:它是一个房屋数据库。我有两个界面,House 和 Window。假设我为每个可用至少有一个实现,配置为......好吧,作为需要配置来实例化的组件,并且为了创建新实例,我只需将此配置提供给正确的 pid。(它既不是工厂组件,也不是服务工厂 - 官方名称是什么?这是Neil写的一篇很棒的帖子)。
到目前为止一切顺利,这就像一个魅力。
房子就是这样,房子。有自己的地址,每个人都不一样,很容易通过他们的街道属性来识别。但是,windows 实例可以在房屋之间共享;它们的配置基本上是宽度和高度。
现在,这些组件还可以在 0..n 基数配置中相互绑定(即使您不想住在没有窗户的房子里)。所以每个房子都有一个窗户列表,对于每种窗户类型,我们知道哪个房子有它(多对多关系)。
我的问题是,假设两所房子共享相同的三个窗户。我该如何描述呢?我觉得基于属性的过滤不够表达。我也觉得这可能不是让框架实例化我的对象的正确方法,但它非常方便。
想法?我是在滥用还是按预期使用它?
(我也可以使用 DS 来完成一半的工作:将房屋列表绑定到它所引用的 Window 实例引用,反之亦然,然后组件实例可以在目标实例上调用 registerWhatever() 函数- 但是我仍然需要以某种方式描述至少这一半。)