<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Live a simple life

    沉默(zhu_xing@live.cn)
    隨筆 - 48, 文章 - 0, 評論 - 132, 引用 - 0
    數(shù)據(jù)加載中……

    【Eclipse插件開發(fā)】關于Eclipse“分層法則”的使用

            Erich Gamma 和 Kent Beck合著的《Contributing to Eclipse》一書中,提到了Eclipse的一些法則。在擴展者相關的法則中,由“分層法則”一條,大致意思如下:“ 將語言無關的功能與特定于具體語言的功能開發(fā),將核心功能與UI功能分開”。
            
            個人覺得雖然叫做“分層法則”,其實體現(xiàn)的是模塊合理劃分的思想。
            
            現(xiàn)在重點關注一下“核心功能和UI功能分開”,說一下自己的經驗,僅供大家參考。自己的經驗是,分層法則是在概要設計模塊劃分的時候就需要引入并嚴格遵守。
           1、根據(jù)需求,對模塊進行劃分。典型的輸出結果是:底層模塊和生成功能模塊,示意圖如下:
                
                  
                 說明:例如在做集成開發(fā)環(huán)境(IDE)的產品,底層基礎模塊包括了資源管理(包含編譯處理)、運行時候模型等類型的模塊,當然也可能是workbench類似的模塊(雖然是UI,但同樣是底層基礎模塊),這些底層模塊為上層模塊提供服務。上層功能模塊類似于你創(chuàng)建了一種自己的基于GEF的編輯器等類型的模塊。

             2、對各個模塊分別進行核心功能和UI進行拆分。這其中既包含了對上層功能模塊機型UI和核心功能的拆分,也包含了對底層模塊的拆分。示意圖如下:
                
                說明:到這里,我們的具體功能模塊劃分了如下:
                          com.myproduct.myeditor.ui插件(UI部分,例如包含了使用GEF創(chuàng)建了流程編輯器的代碼)
                          com.myproduct.myeditor.core插件(模型部分,例如包含了EMF創(chuàng)建編輯器對應模型的代碼)
                            
                          我們也把底層的模塊做了劃分:
                          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分層法則的使用一定要建立的合理模塊劃分的基礎之上。是現(xiàn)有了功能模塊的劃分之后,再對特定模塊進行UI和核心功能的拆分。同時,要注意避免分層法則的過度夸大,模塊的劃分的基礎一定是功能需求,而分層法則只是幫助我們從技術實現(xiàn)的角度更好的劃分模塊直接的關系。
                2、任何模塊之間都需要盡力避免UI和核心功能的耦合,哪怕是在上層模塊和基礎模塊之間也同樣如此。例如,看到有些插件開發(fā)者在非UI核心功能插件中直接去使用eclipse ui框架或者workbench中的東西,一般情況下,這是需要避免的
               3、為了防患于未然,一個功能模塊默認情況下分成*.core和*.ui兩個插件,然后控制好和底層模塊插件間的交互,參見上面2。
               4、外面要下雨了,趕緊回了。。。。。不寫了   改天補充

    本博客中的所有文章、隨筆除了標題中含有引用或者轉載字樣的,其他均為原創(chuàng)。轉載請注明出處,謝謝!

    posted on 2008-08-15 18:28 zhuxing 閱讀(2128) 評論(3)  編輯  收藏 所屬分類: Eclipse Plug-in & OSGI

    評論

    # re: 【Eclipse插件開發(fā)】關于Eclipse“分層法則”的使用  回復  更多評論   

    沙發(fā)。
    2008-08-15 18:30 | 臨風雪光

    # re: 【Eclipse插件開發(fā)】關于Eclipse“分層法則”的使用  回復  更多評論   

    《Contributing to Eclipse》

    這書有中文版么?
    2008-08-15 22:24 | xxuu503

    # re: 【Eclipse插件開發(fā)】關于Eclipse“分層法則”的使用  回復  更多評論   

    記得過去用過的DG小型機名字就是Eclipse,很是親切。
    2008-08-17 18:02 | dell筆記本
    主站蜘蛛池模板: 免费大片在线观看网站| 91精品国产免费久久久久久青草| 免费理论片51人人看电影| 亚洲精品在线免费观看| 一区二区在线免费观看| 亚洲短视频男人的影院| 久久免费公开视频| 亚洲精品亚洲人成在线观看麻豆 | 婷婷亚洲综合五月天小说在线| 成年性羞羞视频免费观看无限| 亚洲AV无码乱码麻豆精品国产| 男女做羞羞的事视频免费观看无遮挡| 亚洲激情黄色小说| 女人张开腿给人桶免费视频| 亚洲av成人片在线观看| 亚洲色图综合在线| 免费高清国产视频| 亚洲性色成人av天堂| 狠狠亚洲狠狠欧洲2019| 国产免费久久久久久无码| 亚洲欧洲自拍拍偷午夜色无码| 成人电影在线免费观看| 亚洲精品国产福利片| 免费看美女被靠到爽的视频| 成人免费观看男女羞羞视频| 国产AV无码专区亚洲AVJULIA| 日韩免费高清大片在线| 亚洲人成网男女大片在线播放| 最好免费观看韩国+日本 | 亚洲色大成网站www永久男同| 四虎AV永久在线精品免费观看| 一级一黄在线观看视频免费| 久久精品亚洲综合专区| 亚色九九九全国免费视频| 国内成人精品亚洲日本语音 | 久久影视综合亚洲| 亚洲黄色免费观看| 日韩在线观看免费| 亚洲欧洲精品久久| www亚洲一级视频com| 亚洲成a人片在线观看天堂无码|