首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从几个实现相同接口的包中使用正确的包?

如何从几个实现相同接口的包中使用正确的包?
EN

Stack Overflow用户
提问于 2016-01-15 07:34:49
回答 1查看 40关注 0票数 1

我在将应用程序拆分为模块时遇到了问题。我发现了OSGi,但我不确定它是否能解决我的问题。

让我说我有核心的web应用程序。此应用程序在表中显示仪表板列表(列为“所有者名称”、“描述”、“创建日期”)。当我单击列表中的仪表板时,我被重定向到仪表板屏幕。

现在事情变得复杂了。这些仪表板可以是不同类型的(CompanyDashboards、PersonalDashboards等)。这些类型应该是可选模块(取决于实例,在实现时只能有一种或两种或多种类型)。

现在:我有了我的应用程序的核心,我想在不知道它的类型的情况下创建仪表板列表。假设我有一些仪表板界面。我使用Dashboard.getName、Dashboard.getDescription、Dashboard.onClick等,我不希望核心知道连接的包。现在,当单击仪表板时,它应该加载并显示正确类型的仪表板(CompanyDashboard或PersonalDashboard)。

如何在不知道可用类型的情况下加载正确的类型。OSGi是正确使用的工具吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-15 08:58:42

为此,您可以使用OSGi服务。您可以在自己的包中创建一个公共的DashBoard接口。然后您可以有几个捆绑包,每个包提供一个DashBoard。在每个包中,您创建DashBoard实例并使用公共接口发布它。然后,您有一个使用DashBoard列表实现中心视图的包。在这个包中,您将侦听DashBoard类型的所有服务,并列出它们。

所以诀窍是不要在中央包中实例化单个实例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34806254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档