体系结构第22章.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
体系结构第22章.ppt

通过在Wi n d o w I m p类中隐藏实现,我们避免了对窗口系统的直接依赖,这可以让Wi n d o w类层次保持相对较小并且较稳定。同时我们还能方便地扩展实现层次结构以支持新的窗口系统。 1. Wi n d o w I m p的子类 Wi n d o w I m p的子类将用户请求转变成对特定窗口系统的操作。考虑我们在2 . 2节所用的例子,我们根据Wi n d o w实例的D r a w R e c t操作定义了Rectangel : : Draw: D r a w R e c t的缺省实现使用了Wi n d o w I m p定义的画出矩形的抽象操作: 这里_ i m p是Wi n d o w的成员变量,它保存了设置Wi n d o w的Wi n d o w I m p。窗口的实现是由 _ i m p所指的Wi n d o w I m p子类的实例定义的。对于一个X Wi n d o w I m p (即X窗口系统的Wi n d o w I m p子类),D e v i c e R e c t的实现可能如下: D e v i c e R e c t这样做是因为XDrawRectangle(在X系统中画矩形的接口)是根据矩形的左下顶点、宽度和高度定义矩形的, D e v i c e R e c t必须根据参数值来计算这些值。首先它必须确定左下顶点(因为( x 0 , y 0 )可能是矩形四个顶点中的任一个),然后计算宽度和高度。 P M Wi n d o w I m p(Presentation Manager的Wi n d o w I m p子类)定义D e v i c e R e c t时会有所不同: 为什么这和X版本有如此大的差别?因为P M没有像X那样显式画矩形的操作,它有一个更一般性的接口可以指定多个段(或称之为路径)的顶点、画出这些线段并且填充它们所围成的区域。 D e v i c e R e c t的P M实现很显然与X的实现有 很大不同,但问题不大。Wi n d o w I m p用一个可能巨大但却稳定的接口隐藏了各个窗口系统接口的差异。这使得Wi n d o w子类的实现者可以将更多的精力放在窗口的抽象上,而不是窗口系统的细节。它也支持我们增加新的窗口系统,而不会搞乱Wi n d o w类。 2. 用Wi n d o w I m p来配置Wi n d o w s 我们还没有论述的一个关键问题是:怎样用一个合适的Wi n d o w I m p子类来配置一个窗口?也就是说,什么时候初始化_ i m p,谁知道正在使用的是什么窗口系统(也就是哪一个Wi n d o w I m p子类)?窗口在能做它所感兴趣的事情之前,都需要某种WindowImp。 这些问题的答案存在很多种可能性,但我们只关注使用Abstract Factory模式的情形。我们可以定义一个抽象工厂类Wi n d o w S y s t e m F a c t o r y,它提供了创建不同种与窗口系统有关的实现对象的接口: 现在我们可以为每一个窗口系统定义一个具体的工厂: Wi n d o w 基本类的构造器能使用WindowSystemFactory 接口和合适的窗口系统的WindowImp来初始化成员变量_ i m p: w i n d o w S y s t e m F a c t o r y变量是WindowSystemFactory某个子类的实例,它是公共可见的,正如g u i F a c t o r y是公共可见的定义视感的变量。w i n d o w S y s t e m F a c t o r y变量可用相同的方法进行初始化。 2.6.4 Bridge模式 Wi n d o w I m p类定义了一个公共窗口系统设施的接口,但它的设计是受不同于Wi n d o w接口的 限制条件驱动的。应用程序员不直接处理WindowImp的接口;它们只处理Wi n d o w对象。所以WindowImp的接口不必与应用程序员的客观世界视图一致,就像我们只关心Wi n d o w类层次和接口的设计。Wi n d o w I m p的接口更能如实反映事实上提供的是什么窗口系统。它可以偏向于功能方法的交集,也可以偏向于功能方法的合集,只要是最适合各目标窗口系统即可。 要注意的是Wi n d o w类接口是针对应用程序员的,而Wi n d o w I m p接口是针对窗口系统的。将窗口功能分离到Wi n d o w和Wi n d o w I m p类层次中,这

文档评论(0)

zhuwo + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档