用GOF模式设计GUI(2),第1张

用GOF模式设计GUI(2),第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组合模式解决了如下约束:

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

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

  · 用户界面应当一致

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

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 用GOF模式设计GUI(2)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情