用GOF模式设计GUI(2)

2008-05-24 05:31:14.0     浏览:270     来源:天新网
关键词:  UI  

用GOF模式设计GUI(2)

GUI 单体(Singleton)创建型模式


目标 确保一个类只有一个实体,同时提供能够作为全局变量使用


问题 一些类应该恰好只有一个实体。例如,代表真实硬件资源的对象,如硬盘,打印机,网络,特殊的系统对象如垃圾桶,在任何一个GUI中都应该只有一个。你该如何管理这些独一无二的对象呢?


约束 GUI Singleton 模式解决了以下约束:


· 这些对象应该只有一个实体。


· 单个实体应该能够容易找得到。


· 用户界面应当一致。


· 屏幕资源是有限的。


解决方案 创建一个Singleton 对象,设计类使得用户不能拷贝或删除对象。GUI启动时就创建它,把它放到屏幕上(通常是桌面),这样它总是容易找到。


案例 Windows95里面的垃圾桶是一个Singleton。它没有大多数对象提供的删除和重命名命令。


结果 GUI Singleton 模式有如下优缺点:


+只有一个单体实体能被创建


+单体很容易在桌面上找到


+单体具有象其他对象一样的行为


GUI 适配器(Adaptor)结构型对象


目标 把一个类的接口转成使用者期望的接口。,适配器模式让接口不兼容的类可以协同工作。


问题 每个接口有他们自己的世界,都有自己的文化,语言,样式。 使用者经常需要保有好几个世界。例如,当使用从GUI桌面继承下来的框架应用,或从另外一个桌面使用这个桌面。用户如何使用不兼容接口呢?


约束 GUI Adaptor 模式解决了以下约束:


· 用户需要使用有不兼容接口的对象


· 你不想改变这个接口


· 用户界面应当保持一致


解决方案 创建一个适配器对象,这个对象包容了另一个对象的接口。适配器是有主接口的正常对象,包容了被包含的接口。用户可以通过适配器与被包容的接口交互。适配器通常还提供了带外(out-of-band)操作来控制两个接口之间的连接。

案例 Window NT 接口可以适配以便在 X Windows 系统下运行(Tektronix菜单条控制适配器)。Windows NT 可以 通过终端模拟器来容纳文本式应用程序。


结果 GUI 适配器模式有如下优缺点:


+可以通过主接口来使用被包容的接口


+两个接口都无需改变


+通用适配器可以适配一系列接口,比如所有的文本应用程序。


-如果适配器中未遵循主接口的习惯用法,会导致用户接口不一致


已知应用 大多数GUI通过终端模拟器来支持文本式应用程序。Windows 和Macintosh界面可以适配运行在X系统中,或者相反。网页浏览器把www用户界面适配到范围很广的主界面。


参看 一个老式的包装器(Wrapper)是这种模式的更通用的形式。


GUI 组合(Composite)结构型对象


目的 把对象组合成树状机构来代表部分-整体层级。组合模式可以让用户统一对待单个对象和对象的组合。


问题 许多GUI对象是由其他GUI对象递归组成的。比如,磁盘包含了目录,目录又包含其他目录和文件。用户应该如何操纵这些组合对象?


约束 GUI组合模式解决了如下约束:


· 用户需要控制整个组合对象


· 用户需要控制组合对象中的单个部分。


· 用户界面应当一致


解决方案 创建能够递归包含其他对象的组合式对象,包括组合对象和原始对象。为所有由原始对象和组合对象共享的操作建立一个共同类。具体对象应继承于这个类,并扩展以提供它们自己的操作。(未完待续)