案例 在Self UI系统中,任何一个图形对象都可被组合(嵌入)来创建组合式结构。Window NT 把目录结构表示成组合对象。
结果 GUI组合模式有如下优缺点:
+用户既可以操纵整个对象,也可以操纵其中的一部分。
+通用操作的接口是一致的。
-很难把特殊的一部分从整体中独立出来。
已知应用 Macintosh 和Windows95界面使用组合对象来代表目录结构。MacDraw和许多其他图像编辑器通过显式分组和非分组图形对象来创建组合对象。
GUI 代理(Proxy)结构式对象
目的 提供一个代理或放置地以方便另一个对象来存取。
问题 某些对象从来不在用户想要的地方。比如,用户想要存储目录结构下很深的一个文件,想让它很容易存取。或者用户希望下载一个网页,放弃任何包含的图像而保持文档结构不变。一个对象如何才能同时出现在两个地方呢?
约束 GUI代理模式解决了如下约束:
· 用户想要一个对象同时出现在两个地方。
· GUI对象识别要求一个对象只能出现在一个地方
· 你不想改变或移动原始对象。
· 原始对象的检索很困难或很昂贵。
· 用户界面应当一致。
解决方案 创建一个代理对象来代表远程或昂贵的对象。把代理对象放在你想要放原始对象的地方,但不能让代理象原始对象一样操作,而是可视地把代理同原始对象区别开来。
案例 Wwidows95 快捷方式行为方式象代理一样,所以一个对象可以出现在桌面的许多个地方。Netscape用图标作为还未下载图片的代理。
结果 GUI代理模式有如下的优缺点:
+原始对象可以同时出现在两个地方
+原始对象不需要改变
+通过代理存取原始对象是透明的
+用户可以区分原始对象和代理
-如果原始对象不可用,代理也会不可用
已知应用 Macintosh 别名和Window95快捷方式的行为方式象放在另外一个地方的远程代理。Netscape使用图标作为还未下载 的图像的虚拟代理。许多网页使用缩略图来作为大图的代理。
参看 《面向模式的软件体系结构》一书也描述了代理模式。
GUI 策略(Strategy)行为式对象
目的 定义一个算法家族,并使它们可以互换。
问题 一个对象使用几种算法,每个都有自己的接口和客户参数设置。用户需要为它们选择的算法设置参数。例如,一个屏保程序提供了几种不同的显示算法(文本,二维图像,三维图像)每个都有自己的参数(要显示的文本,颜色,纹理,三维对象)。 用户如何处理这些不同的算法呢?
约束 GUI 策略模式解决了如下约束:
· 一个对象需要不同参数的不同算法
· 用户应该选择算法和其参数
· 用户界面应当一致。
· 屏幕资源有限
解决方案 创建一个独立的策略对象来代表每一个算法,把每种算法的参数作为策略对象的属性。让策略对象从属于使用算法的对象。用户可以通过主对象选择一种算法,然后通过和策略对象交互来设定算法的参数。
案例 Windows NT 使用策略对象来设置屏保应用程序的参数。
结果 GUI策略模式有如下的优缺点:
+ 策略对象显式代表了不同的算法
+用户可以选择一种算法和设置算法的参数
+在提供一个策略对象的同时保留资源
-改变策略对象也许使界面一致性变差
-接口包含了逐渐增长的对象。
已知应用 Windows NT使用策略对象来为打印机驱动程序设置参数,同样还有屏保。PaintShop Pro 和 XV使用策略对象来设置文件转换算法的参数。
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|