xdingding  
          日歷
          <2005年12月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567
          統(tǒng)計(jì)
          • 隨筆 - 26
          • 文章 - 0
          • 評(píng)論 - 35
          • 引用 - 0

          導(dǎo)航

          常用鏈接

          留言簿(11)

          我參與的團(tuán)隊(duì)

          隨筆分類(lèi)

          隨筆檔案

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 31968
          • 排名 - 1334

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

           
           

          GEF學(xué)習(xí)筆記(二) 模擬GEF設(shè)計(jì)思路,解剖GEF 1

           

          GEF如同其他的一些framework一樣,是一個(gè)復(fù)雜龐大(有點(diǎn)夸張)的,當(dāng)我們想使用駕馭它時(shí),就必須全面的理解其整體構(gòu)架及其運(yùn)作過(guò)程。這需要我們的毅力和敏銳。旅途開(kāi)始了….


           

          GEF主要的任務(wù)是針對(duì)2D圖形編輯操作,如下圖。

           

           

           

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

           

           

           

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

           

          對(duì)于MVC

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

          Model部分:往往內(nèi)部包含了千差萬(wàn)別、不可預(yù)知的商業(yè)信息。因此、GEF框架應(yīng)該盡量減少約束(在下面將詳細(xì)說(shuō)明約束)。

          Controller部分:EditPart/Draw2DFigure/Model這三個(gè)樹(shù)狀對(duì)象模型,在EditPart中將建立了與其對(duì)應(yīng)的Draw2DFigure/Model結(jié)點(diǎn) 建立一一關(guān)聯(lián)的關(guān)系。

           

          這樣產(chǎn)生的構(gòu)架如下:

           

           

           

           

           

           

          思考:

          為什么Controller要同View一樣采用樹(shù)狀結(jié)構(gòu)呢?

          當(dāng)Controller以樹(shù)狀的形式存在,這樣便于功能分解(這個(gè)道理有點(diǎn)像 在類(lèi)設(shè)計(jì)中 復(fù)合優(yōu)于繼承 一般)

          這樣每一結(jié)點(diǎn)的Controller(EditPart) 僅需要處理

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

          尤其當(dāng)用戶(hù)需要在圖形界面編輯界面中,需要使用多種不同UI行為規(guī)則的2D元素(例如不同的形狀塊,不同行為的連線(xiàn)等)組合來(lái)完成工作時(shí)(例如類(lèi)似Visio這樣的界面),這種構(gòu)架的優(yōu)勢(shì)就顯露無(wú)疑。

           

          未完待續(xù)….(下面要探討如何產(chǎn)生上述三個(gè)樹(shù)狀模型等)

          posted on 2005-12-05 13:53 般若菩提 閱讀(2351) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): GEF源碼分析
           
          Copyright © 般若菩提 Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 惠州市| 如皋市| 阿城市| 普宁市| 北碚区| 闽侯县| 拉萨市| 杭锦后旗| 温泉县| 萍乡市| 宜良县| 定结县| 土默特左旗| 信阳市| 咸阳市| 遵义县| 岚皋县| 英吉沙县| 杭锦旗| 定州市| 长海县| 绥滨县| 渭源县| 普格县| 当阳市| 温州市| 寻甸| 平邑县| 梅河口市| 油尖旺区| 济源市| 崇信县| 阿拉善左旗| 尉犁县| 剑川县| 巩留县| 昔阳县| 修文县| 文山县| 肃南| 灵丘县|