2016-01-15 20 views
0

我有將應用程序拆分成模塊的問題。我發現了OSGi,但我不確定它是否能解決我的問題。如何使用實現相同接口的多個bundle的正確bundle?

可以說我擁有核心Web應用程序。此應用程序顯示錶中的儀表板列表(列「所有者名稱」,「描述」,「創建日期」)。當我點擊列表中的儀表板時,我將重定向到儀表板屏幕。

現在事情變得複雜了。這些儀表板可以是不同的類型(公司儀表板,PersonalDashboards等)。這些類型應該是可選模塊(取決於實例在實現時可能只有一種類型或兩種或更多)。

而現在: 我有我的應用程序的核心,我想創建儀表板列表而不知道它的類型。假設我有一些儀表板界面。我使用Dashboard.getName,Dashboard.getDescription,Dashboard.onClick等。我不希望核心知道連接的包。現在,當點擊儀表板時,它應該加載並顯示正確類型的儀表板(CompanyDashboard或PersonalDashboard)。

如何在不知道可用類型的情況下加載正確的核心。 OSGi是否使用正確的工具?

回答

0

您可以爲此使用OSGi服務。您可以在自己的包中創建一個共同的DashBoard界面。然後你可以有幾個捆綁包,每個提供一個DashBoard。在每個這些軟件包中,您都創建了DashBoard實例並使用通用界面進行發佈。 然後你有一個捆綁實現中央視圖與DashBoard列表。在此捆綁中,您可以聽取DashBoard類型的所有服務並列出它們。

所以竅門是不要實例化中央包中的各個實例。

相關問題