程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 關於Eclipse“分層法則”的使用

關於Eclipse“分層法則”的使用

編輯:關於JAVA

Erich Gamma 和 Kent Beck合著的《Contributing to Eclipse》一書中,提到了Eclipse的一些法則 。在擴展者相關的法則中,由“分層法則”一條,大致意思如下:“將語言無關的功能與特定於具體語言 的功能開發,將核心功能與UI功能分開”。

個人覺得雖然叫做“分層法則”,其實體現的是模塊合理劃分的思想。

現在重點關注一下“核心功能和UI功能分開”,說一下自己的經驗,僅供大家參考。自己的經驗是, 分層法則是在概要設計模塊劃分的時候就需要引入並嚴格遵守。

1、根據需求,對模塊進行劃分。典型的輸出結果是:底層模塊和生成功能模塊,示意圖如下:

說明:例如在做集成開發環境(IDE)的產品,底層基礎模塊包括了資源管理(包含編譯處理)、運行 時候模型等類型的模塊,當然也可能是workbench類似的模塊(雖然是UI,但同樣是底層基礎模塊),這 些底層模塊為上層模塊提供服務。上層功能模塊類似於你創建了一種自己的基於GEF的編輯器等類型的模 塊。

2、對各個模塊分別進行核心功能和UI進行拆分。這其中既包含了對上層功能模塊機型UI和核心功能的 拆分,也包含了對底層模塊的拆分。示意圖如下:

說明:到這裡,我們的具體功能模塊劃分了如下:

com.myproduct.myeditor.ui插件(UI部分,例如包含了使用GEF創建了流程編輯器的代碼)

com.myproduct.myeditor.core插件(模型部分,例如包含了EMF創建編輯器對應模型的代碼)

我們也把底層的模塊做了劃分:

com.myproduct.resource插件(例如包含了builder等邏輯代碼)

com.myproduct.refactoring.ui插件(重構功能,例如包含了一系列重構需要的UI代碼等)

com.myproduct.refactoring.core插件(重構功能,例如包含了一些重構需要的模型代碼等)

3、確定上層功能模塊和底層的UI模塊交互。這是最容易破壞Eclipse分層法則的地方了

需求來了:我們的編輯器模塊要對一個底層模塊做擴展,例如對底層的refactoring重構功能做擴展。

這邊容易犯的錯誤是,com.myproduct.myeditor.core插件會直接使用了 com.myproduct.refactoring.ui插件中的邏輯代碼,示意圖如下:

說明:圖中的紅線清晰的說明了,已經違反了Eclipse的“分層法則”。我們模塊中的核心插件直接和 其他模塊的UI插件緊密耦合了。可能有人會說,我們的核心功能插件是在上層模塊中的,依賴底層功能模 塊並不過分,這種想法是錯誤的!!!任何情況下,都要盡力避免核心功能和UI的緊密耦合。

正確的示意圖如下:

【總結】

1、Eclipse分層法則的使用一定要建立的合理模塊劃分的基礎之上。是現有了功能模塊的劃分之後, 再對特定模塊進行UI和核心功能的拆分。同時,要注意避免分層法則的過度誇大,模塊的劃分的基礎一定 是功能需求,而分層法則只是幫助我們從技術實現的角度更好的劃分模塊直接的關系。

2、任何模塊之間都需要盡力避免UI和核心功能的耦合,哪怕是在上層模塊和基礎模塊之間也同樣如此 。例如,看到有些插件開發者在非UI核心功能插件中直接去使用eclipse ui框架或者workbench中的東西 ,一般情況下,這是需要避免的

3、為了防患於未然,一個功能模塊默認情況下分成*.core和*.ui兩個插件,然後控制好和底層模塊插 件間的交互,參見上面2。

4、外面要下雨了,趕緊回了。。。。。不寫了  改天補充

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved