第十章面向对象设计介绍.ppt

  1. 1、本文档共84页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * */82 如图所示,客户对象(Client)向一个作为接口的Subject发出请求,Subject接口的实施代理对象Proxy根据请求的种类,在适当的时候向RealSubject转发请求。 代理模式的参与者如下: 客户对象(Client):向一个作为接口的Subject发出请求。 代理对象(Proxy):保存一个引用使其可以访问实体。 抽象类(Subject):定义实体目标对象RealSubject和代理对象Proxy的共用接口,这样就允许在任何使用RealSubject的地方都可以使用Proxy。 实体目标对象(RealSubject):定义代理对象Proxy所代表的实体。 */82 5.适配器模式 适配器(Adapter)模式又叫包装(Wrapper)模式,指把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作。 适配器模式有类适配器和对象适配器两种。类适配器使用多重继承使一个接口与另一个接口进行匹配,类适配器模式如下图所示。由图可看出,类Adaptee类没有request方法,而客户期待这个方法。为了是客户能够使用Adaptee类,提供一个中间环节,即Adapter类,Adapter类实现了Target接口,并继承自Adaptee类,Adapter类的Request方法重新封装了Adaptee的specificRequest方法,实现了适配的目的。因为Adapter和Adaptee是继承关系,所以决定了这个适配器模式是类的。类适配器模式所涉及的参与者包括: 目标(Target):客户端所期待的接口。 源(Adaptee):需要适配的类。 适配器(Adapter):把源接口转换成目标接口,它必须是类。 */82 类适配器模式 */82 对象适配器依赖于对象组合,如下图所示。 从图中可以看出:客户端需要调用request方法,而Adaptee没有该方法,为了使客户端能够使用Adaptee类,需要提供一个包装(Wrapper)类Adapter。这个类包装了一个Adaptee类的实例,从而将客户端与Adaptee衔接起来。由于Adapter与Adaptee是委派关系,从而决定了这个适配器模式是对象的。该适配器模式所涉及的参与者包括: 目标(Target):客户所期待的接口。 源(Adaptee):是需要适配的类。 适配器(Adapter):通过内部包装一个Adapter对象,把源接口转换成目标接口。 */82 对象适配器模式 */82 10.3 设计模式 四、行为型设计模式 1.调停者模式 通常,面向对象应用程序是由一组为了提供某种服务而彼此交互的对象组成,这组对象叫同事对象。当彼此引用的对象数量比较少时,此时对象之间就为直接交互。当对象的数量增加时,这种直接交互会导致对象之间复杂的、混乱的引用。这就会影响应用程序的可维护性。同时,因为对象之间的高耦合,当一个对象直接引用其他的对象时,缩小了这些对象的复用范围。 调停者模式推荐抽象所有同事对象交互的细节到一个独立的类,这个类就是调停者,它负责这组对象之间的交互。这组对象中的每一个对象仍然负责提供它所具有的服务,但为了提供服务,对象之间不能直接彼此交互。两个不同对象之间的交互通过调停者进行路由。所有的对象把消息发送给调停者。调停者依据应用程序的需求把消息再发送给相应的对象。 */82 如图所示:调停者模式的参与者如下: 调停者:调停者定义一个接口用于与各同事对象进行通信 具体调停者:具体调停者通协调各同事对象实现协作行为,了解并维护它的各个同事。 同事类:同事类定义出调停者到同事对象的接口。 具体同事类:每一个具体同事类都知道它的调停者对象,在需要与其他同事通信时,仅仅与它的调停者进行通信。 */82 2.策略模式 策略模式是针对一组算法,将每一个算法(策略)封装到具有共同接口的独立类中,使得他们可以相互替换。 策略模式是对算法的包装,是将使用算法的责任和算法本身分割开,委派给不同的对象进行管理。策略模式可以把行为和环境分开。其中,环境类负责维持和查询行为类,而各种算法在具体策略类中提供。这样算法的增减和修改都不会影响环境和客户端。当出现需求变化时,只需要实现新的策略类,并在客户端登记即可。 */82 如下图所示:策略模式涉及3个参与者: 语境(Context):持有一个策略类(Strategy)的引用。可以定义一个接口让Strategy访问它的数据。 抽象策略(Strategy):通常由一个接口或抽象类实现,它给出所有的具体策略类所需要的接口。 具体策略(ConcreteStrategy):包装了相关的算法或行为,以Strategy接口实现某个具体算法。 *

文档评论(0)

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

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

1亿VIP精品文档

相关文档