xdingding |
|
|||
日歷
統計
導航常用鏈接留言簿(11)我參與的團隊隨筆分類隨筆檔案最新隨筆
搜索積分與排名
最新評論
閱讀排行榜評論排行榜 |
GEF學習筆記(二) 模擬GEF設計思路,解剖GEF 1
GEF如同其他的一些framework一樣,是一個復雜龐大(有點夸張
GEF主要的任務是針對2D圖形編輯操作,如下圖。
![]()
為了使GEF能夠廣泛的用于種類繁多2D圖形編輯領域,GEF就必須建立一個嚴格的易擴充/易組合/易重用的MVC框架(當然這種分解細化功能對象的方法思想,我們可以用在其它的地方,其它領域、其他語言如C#上)。
![]()
那么如果設計 這個 嚴格的MVC框架(對于Model是嚴格的獨立,它不依賴與View和Controller) 以及 此框架 如何 達到 易擴充/易組合/易重用 的特性。下面我按照自己拙劣的思路,以麻雀之眼度鴻雁之志啦
對于MVC中 View部分:GEF理所當然要使用自家的東東Draw2D。利用Draw2D的Figuer作為自己的View。 Model部分:往往內部包含了千差萬別、不可預知的商業信息。因此、GEF框架應該盡量減少約束(在下面將詳細說明約束)。 Controller部分:EditPart/Draw2D的Figure/Model這三個樹狀對象模型,在EditPart中將建立了與其對應的Draw2D的Figure/Model結點 建立一一關聯的關系。
這樣產生的構架如下:
![]()
![]() 思考: 為什么Controller要同View一樣采用樹狀結構呢? 當Controller以樹狀的形式存在,這樣便于功能分解(這個道理有點像 在類設計中 復合優于繼承 一般) 這樣每一結點的Controller(即EditPart) 僅需要處理
尤其當用戶需要在圖形界面編輯界面中,需要使用多種不同UI行為規則的2D元素(例如不同的形狀塊,不同行為的連線等)組合來完成工作時(例如類似Visio這樣的界面),這種構架的優勢就顯露無疑。
未完待續….(下面要探討如何產生上述三個樹狀模型等。)
|
![]() |
|
Copyright © 般若菩提 | Powered by: 博客園 模板提供:滬江博客 |