七、结构模式之-适配器(Adapter)模式
来源:互联网 发布:软件验收报告范本 编辑:程序博客网 时间:2024/05/16 13:41
适配器模式是一种结构模式。所谓结构模式是指将类或者对象结合在一起形成更大的结构。结构模式又分为类的结构模式和对象的结构模式。类的结构模式就是通过使用继承把
类和接口等结合在一起,已形成更大的结构。当一个类从父类继承并实现接口时,这个新的类就把父类的结构和接口的结构结合起来了。类的结构模式是静态的(就是由开始的继承结构决定了结构模式的结构)。一个类的结构模式的典型例子就是类形式的适配器模式。对象的结构模式是指把不同类型的对象组合在一起,以实现新的功能的方法。对象的结构模式是动态的(即包含的对象多是基类型的对象,可以传递各种派生类对象进去)。对象的结构模式的例子为:代理模式、合成模式、享元模式、装饰模式、和对象形式的适配器模式等。
什么是适配器模式
适配器是把一个类的接口转换成客户端所期望的另一种接口,从而使原本因接口不匹配而无法再一起工作的两个类可以在一起工作。在软件开发中,如果系统的数据和行为都是正确的,但是接口不符合时,就应该考虑使用适配器模式(而不是直接copy paste 代码),以使得控制范围之外(如果是你自己的,业务直接改代码就ok了,虽然从开闭原则不推荐)的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现有的类,而接口又与需要的接口不一致的情况。
适配器模式的两种形式
适配器模式有两种形式,即类的适配器模式和对象的适配器模式。如下图,左侧为类的适配器模式,右侧为对象的适配器模式
类的适配器模式
该方式是通过从客户端期望接口和现有类派生,以使得派生的类满足期望。(C++的方式就是多重继承,Java的话可以通过从现有类派生并implements 目标接口)
对象的适配器模式
对象的适配器模式对于现有类不再是派生,而是通过组合的方式。 示例代码如下:
1: class Target {
2: public:
3: virtual void FuncA() = 0;
4: };
5:
6: class Adaptee {
7: public:
8: void FuncB() { ...} // 该函数提供了FuncA需要的功能
9: };
10:
11: class Adapter : public Target {
12: public:
13: virtual void FuncA() { // 目标接口
14: m_adaptee.FuncB(); // 使用adaptee的函数提供
15: }
16: private:
17: Adaptee m_adaptee;
18: };
- 七、结构模式之-适配器(Adapter)模式
- 结构模式之Adapter(适配器)
- 设计模式之(七)适配器模式Adapter
- 设计模式之七 ------Adapter(适配器)
- 设计模式(七)之 Adapter(适配器)
- 结构型模式之适配器ADAPTER
- 结构模式:Adapter适配器模式
- 设计模式学习笔记(七)之适配器模式(Adapter)
- Adapter适配器(结构型模式)
- Adapter适配器(结构型模式)
- 【结构型模式】adapter(适配器)
- 结构型模式-适配器(adapter)
- 结构型-适配器模式(adapter)
- 结构型模式之适配器模式(Adapter)
- 结构型模式之适配器模式(Adapter)
- 设计模式(结构型)之适配器模式(Adapter Pattern)
- Java设计模式之适配器模式Adapter(结构型)
- 结构型模式之适配器模式(Adapter)
- Debian 6中文乱码问题的解决
- Webdriver_Ruby实例代码(1)
- Redhat 上安装MySQl 失败
- MySQL数据库基准压力测试工具之MySQLSlap使用实例
- <IMG>中UserMap的用法
- 七、结构模式之-适配器(Adapter)模式
- 解决jQuery和其他库的冲突
- GitHub最受欢迎的Android及iOS开源项目
- php 用js实现页面自动跳转
- 注册用户名称的PHP验证以及含中英文混合的字符串长度的判断
- php程序员之面试宝典(不断更新)
- jqGrid列表状态列编码名称转换
- 一位数四则运算
- 二分查找