<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
    數據加載中……

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

            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插件緊密耦合了??赡苡腥藭f,我們的核心功能插件是在上層模塊中的,依賴底層功能模塊并不過分,這種想法是錯誤的?。。∪魏吻闆r下,都要盡力避免核心功能和UI的緊密耦合。
                        
                        正確的示意圖如下:
                       
                      
                
            
               【總結】
                1、Eclipse分層法則的使用一定要建立的合理模塊劃分的基礎之上。是現有了功能模塊的劃分之后,再對特定模塊進行UI和核心功能的拆分。同時,要注意避免分層法則的過度夸大,模塊的劃分的基礎一定是功能需求,而分層法則只是幫助我們從技術實現的角度更好的劃分模塊直接的關系。
                2、任何模塊之間都需要盡力避免UI和核心功能的耦合,哪怕是在上層模塊和基礎模塊之間也同樣如此。例如,看到有些插件開發者在非UI核心功能插件中直接去使用eclipse ui框架或者workbench中的東西,一般情況下,這是需要避免的
               3、為了防患于未然,一個功能模塊默認情況下分成*.core和*.ui兩個插件,然后控制好和底層模塊插件間的交互,參見上面2。
               4、外面要下雨了,趕緊回了。。。。。不寫了   改天補充

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

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

    評論

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

    沙發。
    2008-08-15 18:30 | 臨風雪光

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

    《Contributing to Eclipse》

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

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

    記得過去用過的DG小型機名字就是Eclipse,很是親切。
    2008-08-17 18:02 | dell筆記本
    主站蜘蛛池模板: 最近中文字幕完整版免费高清| 国产精彩免费视频| 久久久久无码精品亚洲日韩| 一级毛片不卡片免费观看| 亚洲乱码一区二区三区国产精品| 亚洲国产精品自产在线播放| 久久永久免费人妻精品下载| 亚洲乱码在线观看| 亚洲日韩欧洲乱码AV夜夜摸| 小日子的在线观看免费| 在线aⅴ亚洲中文字幕| 国产成人免费高清在线观看| 中文字幕免费观看全部电影| 午夜在线a亚洲v天堂网2019| 国产伦精品一区二区三区免费迷| 男人进去女人爽免费视频国产| 色偷偷亚洲第一综合| 亚洲一区二区三区电影| 免费人成在线观看播放国产| 亚洲一级毛片免费看| 一级免费黄色毛片| 一本色道久久88—综合亚洲精品 | 国产一区二区三区免费在线观看| 在线成人精品国产区免费| 人人狠狠综合久久亚洲| 久久亚洲中文字幕精品有坂深雪| 亚洲高清最新av网站| 99视频在线精品免费观看6| 一级毛片免费观看不卡视频| 成人免费观看男女羞羞视频| 国产AV旡码专区亚洲AV苍井空| 亚洲成人在线电影| 亚洲中文久久精品无码ww16| 国产成人无码a区在线观看视频免费| 美女内射毛片在线看免费人动物| 综合一区自拍亚洲综合图区| 亚洲天堂2016| 亚洲国产精品日韩在线观看| 亚洲视频在线免费观看| 亚洲熟妇无码乱子AV电影| 亚洲精品国产va在线观看蜜芽|