xdingding  
          日歷
          <2005年12月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567
          統計
          • 隨筆 - 26
          • 文章 - 0
          • 評論 - 35
          • 引用 - 0

          導航

          常用鏈接

          留言簿(11)

          我參與的團隊

          隨筆分類

          隨筆檔案

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 31968
          • 排名 - 1334

          最新評論

          閱讀排行榜

          評論排行榜

           
           

          GEF學習筆記(二) 模擬GEF設計思路,解剖GEF 1

           

          GEF如同其他的一些framework一樣,是一個復雜龐大(有點夸張)的,當我們想使用駕馭它時,就必須全面的理解其整體構架及其運作過程。這需要我們的毅力和敏銳。旅途開始了….


           

          GEF主要的任務是針對2D圖形編輯操作,如下圖。

           

           

           

          為了使GEF能夠廣泛的用于種類繁多2D圖形編輯領域,GEF就必須建立一個嚴格的易擴充/易組合/易重用的MVC框架(當然這種分解細化功能對象的方法思想,我們可以用在其它的地方,其它領域、其他語言如C#上)。

           

           

           

          那么如果設計 這個 嚴格的MVC框架(對于Model是嚴格的獨立,它不依賴與ViewController) 以及 此框架 如何 達到 易擴充/易組合/易重用 的特性。下面我按照自己拙劣的思路,以麻雀之眼度鴻雁之志啦

           

          對于MVC

          View部分:GEF理所當然要使用自家的東東Draw2D。利用Draw2DFiguer作為自己的View

          Model部分:往往內部包含了千差萬別、不可預知的商業信息。因此、GEF框架應該盡量減少約束(在下面將詳細說明約束)。

          Controller部分:EditPart/Draw2DFigure/Model這三個樹狀對象模型,在EditPart中將建立了與其對應的Draw2DFigure/Model結點 建立一一關聯的關系。

           

          這樣產生的構架如下:

           

           

           

           

           

           

          思考:

          為什么Controller要同View一樣采用樹狀結構呢?

          Controller以樹狀的形式存在,這樣便于功能分解(這個道理有點像 在類設計中 復合優于繼承 一般)

          這樣每一結點的Controller(EditPart) 僅需要處理

          • 自身邏輯功能
          • 管理子Controller
          • 必要時通知父Controller

          尤其當用戶需要在圖形界面編輯界面中,需要使用多種不同UI行為規則的2D元素(例如不同的形狀塊,不同行為的連線等)組合來完成工作時(例如類似Visio這樣的界面),這種構架的優勢就顯露無疑。

           

          未完待續….(下面要探討如何產生上述三個樹狀模型等)

          posted on 2005-12-05 13:53 般若菩提 閱讀(2351) 評論(0)  編輯  收藏 所屬分類: GEF源碼分析
           
          Copyright © 般若菩提 Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 石阡县| 汾阳市| 肥西县| 鄂托克前旗| 万源市| 防城港市| 阿荣旗| 当阳市| 建德市| 贵阳市| 襄汾县| 广德县| 峨眉山市| 屏山县| 聂荣县| 英山县| 和顺县| 永吉县| 南陵县| 吉木萨尔县| 大埔区| 琼海市| 莲花县| 巨鹿县| 峨眉山市| 东源县| 宁德市| 永宁县| 夏邑县| 格尔木市| 靖西县| 汾西县| 西和县| 福建省| 江津市| 合川市| 军事| 东山县| 永安市| 岫岩| 定襄县|