<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ā)】關(guān)于Eclipse“分層法則”的使用

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

             2、對各個模塊分別進行核心功能和UI進行拆分。這其中既包含了對上層功能模塊機型UI和核心功能的拆分,也包含了對底層模塊的拆分。示意圖如下:
                
                說明:到這里,我們的具體功能模塊劃分了如下:
                          com.myproduct.myeditor.ui插件(UI部分,例如包含了使用GEF創(chuàng)建了流程編輯器的代碼)
                          com.myproduct.myeditor.core插件(模型部分,例如包含了EMF創(chuàng)建編輯器對應(yīng)模型的代碼)
                            
                          我們也把底層的模塊做了劃分:
                          com.myproduct.resource插件(例如包含了builder等邏輯代碼)
                          com.myproduct.refactoring.ui插件(重構(gòu)功能,例如包含了一系列重構(gòu)需要的UI代碼等)
                          com.myproduct.refactoring.core插件(重構(gòu)功能,例如包含了一些重構(gòu)需要的模型代碼等)

                3、確定上層功能模塊和底層的UI模塊交互。這是最容易破壞Eclipse分層法則的地方了
                      需求來了:我們的編輯器模塊要對一個底層模塊做擴展,例如對底層的refactoring重構(gòu)功能做擴展。
                      這邊容易犯的錯誤是, com.myproduct.myeditor.core插件會直接使用了com.myproduct.refactoring.ui插件中的邏輯代碼,示意圖如下:
                 
                          
                        說明:圖中的紅線清晰的說明了,已經(jīng)違反了Eclipse的“分層法則”。我們模塊中的核心插件直接和其他模塊的UI插件緊密耦合了。可能有人會說,我們的核心功能插件是在上層模塊中的,依賴底層功能模塊并不過分,這種想法是錯誤的!!!任何情況下,都要盡力避免核心功能和UI的緊密耦合。
                        
                        正確的示意圖如下:
                       
                      
                
            
               【總結(jié)】
                1、Eclipse分層法則的使用一定要建立的合理模塊劃分的基礎(chǔ)之上。是現(xiàn)有了功能模塊的劃分之后,再對特定模塊進行UI和核心功能的拆分。同時,要注意避免分層法則的過度夸大,模塊的劃分的基礎(chǔ)一定是功能需求,而分層法則只是幫助我們從技術(shù)實現(xiàn)的角度更好的劃分模塊直接的關(guān)系。
                2、任何模塊之間都需要盡力避免UI和核心功能的耦合,哪怕是在上層模塊和基礎(chǔ)模塊之間也同樣如此。例如,看到有些插件開發(fā)者在非UI核心功能插件中直接去使用eclipse ui框架或者workbench中的東西,一般情況下,這是需要避免的
               3、為了防患于未然,一個功能模塊默認(rèn)情況下分成*.core和*.ui兩個插件,然后控制好和底層模塊插件間的交互,參見上面2。
               4、外面要下雨了,趕緊回了。。。。。不寫了   改天補充

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

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

    評論

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

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

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

    《Contributing to Eclipse》

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

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

    記得過去用過的DG小型機名字就是Eclipse,很是親切。
    2008-08-17 18:02 | dell筆記本
    主站蜘蛛池模板: 精品亚洲av无码一区二区柚蜜| 亚洲一区在线视频| 一级特黄录像视频免费| 国产免费av片在线无码免费看| 亚洲6080yy久久无码产自国产| 国产成人免费a在线资源| 亚洲第一se情网站| 国产片免费福利片永久| 美女露隐私全部免费直播| 国产人妖ts在线观看免费视频| 国产亚洲精品第一综合| 亚洲日韩中文字幕日韩在线| 成人午夜免费视频| 亚洲精品亚洲人成人网| 99热这里只有精品6免费| 亚洲av无码一区二区三区观看| 女人18毛片水真多免费播放| 亚洲av日韩精品久久久久久a| 国产jizzjizz免费看jizz| 九九久久国产精品免费热6| 亚洲日韩欧洲无码av夜夜摸| 久久精品无码专区免费青青 | 亚洲综合精品香蕉久久网| 成人无码a级毛片免费| 亚洲美女视频一区| 麻豆成人精品国产免费| 国产91成人精品亚洲精品| 91麻豆国产自产在线观看亚洲| 国产精品白浆在线观看免费| 亚洲国产精品成人综合色在线婷婷 | 国产成人久久精品亚洲小说| 亚洲自偷自偷图片| ww4545四虎永久免费地址| 亚洲精品V天堂中文字幕| 亚洲午夜福利在线观看| 精品无码免费专区毛片| 日本免费精品一区二区三区| 亚洲AV永久无码精品成人| 毛片免费视频在线观看| 一区二区三区免费高清视频| 亚洲国产日韩在线人成下载|