结构型设计概述和适配器模式.ppt
《结构型设计概述和适配器模式.ppt》由会员分享,可在线阅读,更多相关《结构型设计概述和适配器模式.ppt(41页珍藏版)》请在三一办公上搜索。
1、结构型设计模式,桂勋,结构型设计模式,结构型设计模式概述,结构型模式(Structural Pattern)描述如何将类或者对象结合在一起形成更大的结构,就像搭积木,可以通过简单积木的组合形成复杂的、功能更为强大的结构。,结构型设计模式的概述,结构型模式可以分为类结构型模式和对象结构型模式:类结构型模式关心类的组合,由多个类可以组合成一个更大的系统,在类结构型模式中一般只存在继承关系和实现关系。对象结构型模式关心类与对象的组合,通过关联关系使得在一个类中定义另一个类的实例对象,然后通过该对象调用其方法。根据“合成复用原则”,在系统中尽量使用关联关系来替代继承关系,因此大部分结构型模式都是对象结
2、构型模式。,GOF95中的特化图(1),1、类图,2、对象图,3、参与客户和绝对客户,GOF95中的特化图(2),GOF95中的特化图(3),第一个请求是aCreationTool发出的,请求创建aLineShape。接下来,aLineShape被加入到aDrawing中,这导致aDrawing向它自身发出一个Refresh请求。而在Refresh操作过程中aDrawing又向aLineShape发出一个Draw请求。,Adapter-适配器Bridge-桥接Composite-组合Decorator-装饰Facade-外观Flyweight-享元Proxy-代理,结构型设计模式,Adapte
3、r-适配器,主要内容,模式动机模式定义模式结构模式的程序表示C+模式的程序表示Java实例与解析模式效果评价模式的适用环境模式扩展已知应用模式小结,Adapter-适配器:动机,Adapter-适配器:动机,在软件开发中采用类似于电源适配器的设计和编码技巧被称为适配器模式。通常情况下,客户端可以通过目标类的接口访问它所提供的服务。有时,现有的类可以满足客户类的功能需要,但是它所提供的接口不一定是客户类所期望的,这可能是因为现有类中方法名与目标类中定义的方法名不一致等原因所导致的。在这种情况下,现有的接口需要转化为客户类期望的接口,这样保证了对现有类的重用。如果不进行这样的转化,客户类就不能利用
4、现有类所提供的功能,适配器模式可以完成这样的转化。,Adapter-适配器:动机,在适配器模式中可以定义一个包装类,包装不兼容接口的对象,这个包装类指的就是适配器(Adapter),它所包装的对象就是适配者(Adaptee),即被适配的类。适配器提供客户类需要的接口,适配器的实现就是把客户类的请求转化为对适配者的相应接口的调用。也就是说:当客户类调用适配器的方法时,在适配器类的内部将调用适配者类的方法,而这个过程对客户类是透明的,客户类并不直接访问适配者类。因此,适配器可以使由于接口不兼容而不能交互的类可以一起工作。这就是适配器模式的模式动机。,Adapter-适配器:动机,GOF95中的例子
5、:,Adapter-适配器:定义,适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。,Adapter-适配器:结构,(1)类适配器:类适配器使用多重继承对一个接口与另一个接口进行匹配,Adapter-适配器:结构,(2)对象适配器:对象适配器依赖于对象组合,Adapter-适配器:结构,Target(Shape)定义Client使用的与特定领域相关的接口。Client(DrawingEditor)与符合Target接口的对象
6、协同。Adaptee(TextView)定义一个已经存在的接口,这个接口需要适配。Adapter(TextShape)对Adaptee的接口与Target接口进行适配,Adapter-适配器:程序表示C+,class Shape public:Shape();virtual void BoundingBox(Point,class TextView public:TextView();void GetOrigin(Coord,class Manipulator;class TextManipulator:public Manipulator public:TextManipulator(con
7、st TextShape*);,Adapter-适配器:程序表示C+,(1)类适配器,class TextShape:public Shape,private TextView public:TextShape();virtual void BoundingBox(Point,void TextShape:BoundingBox(Point,Adapter-适配器:程序表示C+,(1)对象适配器,TextShape:TextShape(TextView*t)_text=t;void TextShape:BoundingBox(Point,class TextShape:public Shape
8、 public:TextShape(TextView*);virtual void BoundingBox(Point,Adapter-适配器:程序表示Java,Java中典型的类适配器代码:,Adapter-适配器:程序表示Java,Java中典型的对象适配器代码:,Adapter-适配器:实例与解析,实例一:仿生机器人 现需要设计一个可以模拟各种动物行为的机器人,在机器人中定义了一系列方法,如机器人叫喊方法cry()、机器人移动方法move()等。如果希望在不修改已有代码的基础上使得机器人能够像狗一样叫,像狗一样跑,使用适配器模式进行系统设计。,Adapter-适配器:实例与解析,实例二:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 设计 概述 适配器 模式
链接地址:https://www.31ppt.com/p-6360339.html