<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 80,comments - 749,trackbacks - 2
    UI框架的組織模式
    The Orgnizing Patterns Of UI Framework


    原著:Brian Sun

    UI框架中有很多組件,很多類,很多細小而繁多的標準,這些特征使得UI框架成為一個業務邏輯和底層代碼的復雜無序混合體,對它的類組織方式的研究也就顯得特別有模式化編程的意義。

    Pattern 1:Composite
        幾乎所有時下流行的UI組件都會遵循Composite模式,比如AWT、Swing、Java2D、SWT、JFace、EclipseUI、 Draw2D、GEF以及.NET世界的Windows Forms。該模式的大概含義是,子組件和母組件是同一個類型的。比如一個Button應該是安排在一個Panel上的,但是Button和Panel可能都是一個Container或者都是一個Composite。

    Pattern 2:繪制前組織
        目前公共領域的設計模式還沒有可以精確的表達這個思路的名詞,所以我就自做主張,起了個名字,后面的Pattern如果用中文命名,也是這個原因。該模式的大概含義是,子組件應趕在母組件繪制之前將自己顯式的加入母組件。比如說,如果Button要繼承Panel的某個屬性(我是指Button要得到 Panel的某個知識),那么就要趕在繪制之前顯式的將這個Button對象add到Panel中去。繪制前組織的典型例子是AWT、Swing、 Java2D、Draw2d等。

    Pattern 3:構建時組織
        和某種工廠方式相似,構建時組織是在類的構造器上做文章。該模式的大概含義是,子組件在構建時就必須確定它屬于哪個母組件,以便在后面的操作中與母組件戶動。比如Button所有的構建器都要求傳入一個Composite對象作為parent。這個模式與上面的Pattern 2完全不同,其典型例子有SWT、JFace、EclipseUI、GEF(都是一家的)。

    Pattern 4:MVC
        幾乎所有時下流行的UI組件都或多或少的使用了MVC,或不太嚴格的MVC,或MVC某個角度的思想。該模式用在UI系統上的大概含義是,將組件的繪制、設置和事件處理分開,在不同的角色中完成。我在本文所舉的所有例子中,只有GEF實現了嚴格和完美的MVC,而AWT、Swing、Java2D等組件(都是由Sun開發或Sun和Netscape合作開發的)則使用了一個著名的同時也是最容易被搞混淆的MVC變種。該變種中也有三個角色,繪圖器代理、無知的模型和監聽器、原型組件和事件處理方法。而微軟的MFC也采用了MVC的另一個著名變種,Document-View,這個變種顯然只有兩個角色。

    Pattern 5:Delegate
        性能和可移植性是一直是UI平臺最關注的兩個問題。性能依靠盡量少的載入類,可移植性則依靠對更多圖形庫的支持,這兩件事都需要將硬性的繪圖方法或事件處理方式分離出去,交給代理完成。該模式的含義是,繪圖工具本身不繪圖,它只負責決定應該由它的哪個代理完成,并負責為代理繪制圖形搜集參數。 Eclipse和Sun的主要工具都采用了這一模式,不同的是Eclipse也在事件處理環節應用了代理模式,因為事件被觸發之前沒有理由將它的實現讀入內存,所以實現應該由代理完成。

    Pattern 6:Layer
       Eclipse采用了嚴格而完美的分層模型,有嚴格界限的層次至少有三個,分別是org.eclipse.swt, org.eclipse.jface, org.eclipse.ui。其中SWT負責繪制簡單的組件,提供簡單組件的功能。JFace負責繪制復雜交互方式的組件,有些JFace的組件包裝了 SWT的組件,并提供了隨組件而走的服務。這兩個包都可以在Eclipse以外的平臺上使用。UI層則完成Eclipse平臺的主要UI功能,很多地方提供了系統唯一的服務,并包裝了JFace的組件。Draw2D建立在SWT之上,包裝了SWT使其能更好的為繪制二維復雜圖形而服務。GEF建立在 Draw2D和EclipseUI層的基礎之上,為Eclipse Workbench提供某些功能。

    本文只涉及了UI架構的組織模式,并未涉及其它模式,關于UI的其它模式會在今后的文章中再次討論,即將出版,敬請留意。這里有很多想法還不太全面,請參與我的討論并提出你的想法,或者增加你的模式。謝謝。

    做軟件的泡泡

    posted on 2005-02-26 04:35 Brian Sun 閱讀(2790) 評論(0)  編輯  收藏 所屬分類: 軟件
    主站蜘蛛池模板: 久草视频免费在线观看| 国产成人久久AV免费| 成全视频免费高清 | 亚洲热线99精品视频| 免费无遮挡无遮羞在线看| 亚洲A∨午夜成人片精品网站| 国产精品亚洲综合天堂夜夜| 免费国产一级特黄久久| 精品在线观看免费| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 亚洲日产2021三区在线| 成视频年人黄网站免费视频| jiz zz在亚洲| 亚洲国产成人久久一区WWW| 一个人免费观看www视频| 国产亚洲真人做受在线观看| 无码日韩精品一区二区三区免费| 亚洲视频在线观看免费| 4hu四虎最新免费地址| 国产亚洲精品VA片在线播放| 免费在线观看你懂的| 中文字幕手机在线免费看电影| 亚洲处破女AV日韩精品| 亚欧在线精品免费观看一区| 亚洲精品无码少妇30P| 亚洲成av人片天堂网老年人| 两个人看www免费视频| 亚洲剧情在线观看| 国产色爽免费视频| 两个人www免费高清视频| 亚洲成人福利在线| 国产无遮挡吃胸膜奶免费看| 久久九九全国免费| 亚洲人成网亚洲欧洲无码| 亚洲区小说区图片区| 亚洲黄色免费网站| 九九久久精品国产免费看小说| 91亚洲一区二区在线观看不卡| 日本无吗免费一二区| 久草免费手机视频| 亚洲国产成人精品无码区花野真一 |