我认为我正在使用OSGi服务+ DS一起走上正轨,但是,我真的想要滥用它。不管怎样,或者它只是纯粹的真棒。 (两者仍然可能)。
让我们假设以下应用程序:它是一个房屋数据库。我有两个界面,House和Window。假设我每个可用的至少有一个实现,配置为......好,作为需要配置实例化的组件,并且为了创建新实例,我只是将此配置提供给正确的pid。 (这不是工厂组件,也不是服务工厂 - 官方名称是什么?这是尼尔的优秀post about it。
到目前为止这么好,这就像一个魅力。
房子就是这样,房子。有自己的地址,每一个都不同,很容易通过他们的街道财产来识别。但是,windows实例可以在房屋之间共享;它们的配置基本上是宽度和高度。
现在,这些组件也可以在0..n基数配置中相互绑定(即使你不想住在没有窗户的房子里)。所以每个房子都有一个窗口列表,对于每种窗口类型,我们知道哪个房子有它(多对多关系)。
我的问题是,让我们说两个房子共用同一个三个窗口。我怎么形容这个?我觉得基于属性的过滤不够表达。我也觉得这可能不是让框架实例化我的对象的正确方法,但它非常方便。
思考?我是在滥用还是按预期使用它?
(我也可以使用DS来完成一半的工作:将一个Houses列表绑定到一个Window实例引用,或者反之亦然,然后组件实例可以调用registerWhatever()函数目标实例 - 但是我仍然需要以某种方式描述至少这一半。)
答案 0 :(得分:2)
很难弄清楚你在这里问的是什么,可能是因为House / Window抽象不起作用。显然,这不是你真正做的......你只是试图模糊或简化真实的模型吗?我理解这是有正当理由的,但House / Window听起来更像是域类而不是服务或组件。如果您真的在每行数据库中创建一个服务,那么我认为您滥用服务的概念。