案例 在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ū)別開來。
結(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ū)別開來。