我在将应用程序拆分为模块时遇到了问题。我发现了OSGi,但我不确定它是否能解决我的问题。
让我说我有核心的web应用程序。此应用程序在表中显示仪表板列表(列为“所有者名称”、“描述”、“创建日期”)。当我单击列表中的仪表板时,我被重定向到仪表板屏幕。
现在事情变得复杂了。这些仪表板可以是不同类型的(CompanyDashboards、PersonalDashboards等)。这些类型应该是可选模块(取决于实例,在实现时只能有一种或两种或多种类型)。
现在:我有了我的应用程序的核心,我想在不知道它的类型的情况下创建仪表板列表。假设我有一些仪表板界面。我使用Dashboard.getName、Dashboard.getDescription、Dashboard.onClick等,我不希望核心知道连接的包。现在,当单击仪表板时,它应该加载并显示正确类型的仪表板(CompanyDashboard或PersonalDashboard)。
如何在不知道可用类型的情况下加载正确的类型。OSGi是正确使用的工具吗?
发布于 2016-01-15 08:58:42
为此,您可以使用OSGi服务。您可以在自己的包中创建一个公共的DashBoard接口。然后您可以有几个捆绑包,每个包提供一个DashBoard。在每个包中,您创建DashBoard实例并使用公共接口发布它。然后,您有一个使用DashBoard列表实现中心视图的包。在这个包中,您将侦听DashBoard类型的所有服务,并列出它们。
所以诀窍是不要在中央包中实例化单个实例。
https://stackoverflow.com/questions/34806254
复制相似问题