用GOF模式設計GUI(3)

字號:

案例 在Self UI系統(tǒng)中,任何一個圖形對象都可被組合(嵌入)來創(chuàng)建組合式結(jié)構(gòu)。Window NT 把目錄結(jié)構(gòu)表示成組合對象。
      
    結(jié)果 GUI組合模式有如下優(yōu)缺點:
    +用戶既可以操縱整個對象,也可以操縱其中的一部分。
    +通用操作的接口是一致的。
    -很難把特殊的一部分從整體中獨立出來。
    已知應用 Macintosh 和Windows95界面使用組合對象來代表目錄結(jié)構(gòu)。MacDraw和許多其他圖像編輯器通過顯式分組和非分組圖形對象來創(chuàng)建組合對象。
    GUI 代理(Proxy)結(jié)構(gòu)式對象
    目的 提供一個代理或放置地以方便另一個對象來存取。
    問題 某些對象從來不在用戶想要的地方。比如,用戶想要存儲目錄結(jié)構(gòu)下很深的一個文件,想讓它很容易存取?;蛘哂脩粝M螺d一個網(wǎng)頁,放棄任何包含的圖像而保持文檔結(jié)構(gòu)不變。一個對象如何才能同時出現(xiàn)在兩個地方呢?
    約束 GUI代理模式解決了如下約束:
    · 用戶想要一個對象同時出現(xiàn)在兩個地方。
    · GUI對象識別要求一個對象只能出現(xiàn)在一個地方
    · 你不想改變或移動原始對象。
    · 原始對象的檢索很困難或很昂貴。
    · 用戶界面應當一致。
    解決方案 創(chuàng)建一個代理對象來代表遠程或昂貴的對象。把代理對象放在你想要放原始對象的地方,但不能讓代理象原始對象一樣操作,而是可視地把代理同原始對象區(qū)別開來。