2015-12-19 23 views
0

當將UI包含在OSGI包中並在其他包中重用此UI時,是否有最佳做法?重新使用OSGI包中的組件樹?

例如,我有一個自定義組件樹,其中每個組件都擴展IComponent。例如,一個庫存領域:

InventoryField extends BaseInventoryField 
BaseInventoryField extends GridField 
GridField extends BaseComponent 
BaseComponent implements IComponent 

這樣,我避免重複代碼,如果我不這樣做,這樣我已經把從BaseComponent,GridField和BaseInventoryField代碼在InventoryField類。當某些事情發生變化並且您有很多組件時,這會造成大量維護和代碼重複。

我知道一個人不應該從另一個包中擴展類(日食給我「不是API」的警告)。但是我不能把所有東西放在一個包中,導致其他包必須能夠創建一個GUI(不需要重新創建包中的整個組件樹)。

有沒有解決這類問題的方法?

回答

2

你絕對可以並且應該從另一個包中擴展類,而OSGi不會阻止你這樣做。但是,這些類的實現現在是包的公共API的一部分,您需要跟蹤API更改。它比實現接口更緊密。

Eclipse可幫助您跟蹤API更改,查找API基準的相關文檔。

+0

感謝@Tassos Bassoukos,今天早上我設法將我所有的UI基礎類移動到一個單獨的api包,並且所有工作都重新開始。基線是一個有趣的功能,在不久的將來需要我的關注。 –