一起来学设计模式(5)——适配器模式
2011-09-01 17:36
162 查看
生活中,我们将插头插在插座上来取电,到了有些国家,插座格式不支持插头,理论上,可以有以下三种做法:
1. 将插头改装一下,使之符合插座;
2. 将插座改装一下,使之符合插头;
3. 找一个适配器,介于插头和插座之间;
无疑,前两种实现方法代价比较大,而且不灵活。比如,采用第一种方法,回国后还得改装回来。对于第三种方法,即没有修改现有的对象,也具有很高的灵活性。
具体来说,假设A类使用到了B类提供的方法,当用C类替换B类之后,C类和B类的为A类提供的接口有差别,在不修改A类,也不修改C类的情况下,如何使得A类可以使用C类。
下面就以此为例,来实现相关的代码,所采用的模式就是适配器模式。假设用户User之前使用的是中国插座,释放方法是getValue,美国的插座的使用方法是getNumber,为了不修改User调用getValue方法,创建了一个适配器Adapter。
1. 将插头改装一下,使之符合插座;
2. 将插座改装一下,使之符合插头;
3. 找一个适配器,介于插头和插座之间;
无疑,前两种实现方法代价比较大,而且不灵活。比如,采用第一种方法,回国后还得改装回来。对于第三种方法,即没有修改现有的对象,也具有很高的灵活性。
具体来说,假设A类使用到了B类提供的方法,当用C类替换B类之后,C类和B类的为A类提供的接口有差别,在不修改A类,也不修改C类的情况下,如何使得A类可以使用C类。
下面就以此为例,来实现相关的代码,所采用的模式就是适配器模式。假设用户User之前使用的是中国插座,释放方法是getValue,美国的插座的使用方法是getNumber,为了不修改User调用getValue方法,创建了一个适配器Adapter。
/** * @file Adapter.h * @brief * @author Don Hao * @date 2011-9-1 17:14:51 * @version * <pre><b>copyright: </b></pre> * <pre><b>email: </b>hao.limin@gmail.com</pre> * <pre><b>company: </b>http://blog.csdn.net/donhao</pre> * <pre><b>All rights reserved.</b></pre> * <pre><b>modification:</b></pre> * <pre>Write modifications here.</pre> */ #ifndef _ADAPTER_H #define _ADAPTER_H class SocketUSA { public: int getNumber() { return 0; } }; class SocketChina { public: int getValue() { return 0; } }; class Adapter : SocketChina { public: Adapter(SocketUSA s) { this->s = s; } int getValue() { return s.getNumber(); } private: SocketUSA s; }; class User { public: void plugin() { SocketUSA s; Adapter a(s); a.getValue(); } }; #endif /**< _ADAPTER_H */
/** * @file Adapter.cpp * @brief * @author Don Hao * @date 2011-9-1 17:14:57 * @version * <pre><b>copyright: </b></pre> * <pre><b>email: </b>hao.limin@gmail.com</pre> * <pre><b>company: </b>http://blog.csdn.net/donhao</pre> * <pre><b>All rights reserved.</b></pre> * <pre><b>modification:</b></pre> * <pre>Write modifications here.</pre> */ #include "Adapter.h" void main() { User u; u.plugin(); }
相关文章推荐
- 设计模式笔记——适配器模式
- 设计模式-适配器模式(Adapter)
- 设计模式——适配器模式
- 设计模式之结构型-适配器模式(6)
- 设计模式--适配器模式
- Java设计模式 - 适配器模式
- Java/Android 设计模式系列(6)--适配器模式
- Java设计模式-适配器模式
- Java设计模式构造型之适配器模式
- java设计模式—适配器模式
- 5.适配器模式(设计模式笔记)
- Java设计模式——适配器模式(Adapter Pattern)
- 设计模式与泡mm的关系之Adapter适配器模式及适配器模式的再思考
- 设计模式—适配器模式
- 设计模式初探-适配器模式
- 设计模式--适配器模式(简要)(四)
- 设计模式之适配器模式
- 设计模式之适配器模式与外观模式
- 23种设计模式3--结构型模式(适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式)
- Java设计模式--适配器模式