设计模式<一>适配器模式
2017-12-19 09:51
120 查看
设计模式概述见:
http://blog.csdn.net/chijiandi/article/details/78839305
通俗地说就是两个相似功能的接口名字不一样而客户端需要他们名字一样。
使客户端能够统一地调用同一接口。
也提过是因为两个接口都已经完善而不太容易修改的情况下才会使用适配器模式。
以下举一个例子来展示:
比如现在有一个将中文的中国人的类:
还有一个讲英语的外国人的类:
他们的功能其实是一致的,都是说,可是客户端需要分别通过sayChinese和sayEnglish来对他们进行分别的调用。
那么我们就需要一个适配器:翻译 来对他们进行转换。
所以我们需要创建一个翻译的类:
在其中封装了讲英语的外国人。那么我们只需要知道翻译就可以将sayEnglish翻译成sayChinese
那样在客户端中的调用只需要这样:
此时,客户端使用的时候,只需要知道这是一个说中文的方法即可。
初学设计模式,如有理解错误,感谢指出!
http://blog.csdn.net/chijiandi/article/details/78839305
适配器模式的基本概念
适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法再一起工作的两个类能够在一起工作。通俗地说就是两个相似功能的接口名字不一样而客户端需要他们名字一样。
什么时候使用适配器模式
当开发后期,两个功能相似的接口因为都不太容易改,或当调用别人类似功能的接口时,通过适配器模式返回客户端一致的接口。使客户端能够统一地调用同一接口。
适配器模式怎么用
在前面提了,适配器模式使为了要给客户端一个一致的接口产生的。也提过是因为两个接口都已经完善而不太容易修改的情况下才会使用适配器模式。
以下举一个例子来展示:
比如现在有一个将中文的中国人的类:
** * @ClassName: Chinese * @Description: 中国人讲中文 * @author cjd * @date 2017年12月16日 上午11:20:53 */ public class Chinese { protected void sayChinese() { System.out.println("say Chinese"); } }
还有一个讲英语的外国人的类:
/** * @ClassName: English * @Description: 外国人讲英语 * @author cjd * @date 2017年12月16日 上午11:20:59 */ public class English{ protected void sayEnglish() { System.out.println("say English"); } }
他们的功能其实是一致的,都是说,可是客户端需要分别通过sayChinese和sayEnglish来对他们进行分别的调用。
那么我们就需要一个适配器:翻译 来对他们进行转换。
所以我们需要创建一个翻译的类:
/** * @ClassName: Translator * @Description: 翻译类 * @author cjd * @date 2017年12月16日 上午11:25:36 */ public class Translator { English english; public Translator(English english) { this.english=english; } public void sayChinese() { english.sayEnglish(); } }
在其中封装了讲英语的外国人。那么我们只需要知道翻译就可以将sayEnglish翻译成sayChinese
那样在客户端中的调用只需要这样:
/** * @ClassName: Main * @Description: 主函数调用 * @author cjd * @date 2017年12月16日 上午11:26:48 */ public class Main { public static void main(String[] args) { Chinese chinese = new Chinese(); Translator translator = new Translator(new English()); chinese.sayChinese(); translator.sayChinese(); } }
此时,客户端使用的时候,只需要知道这是一个说中文的方法即可。
后记
适配器模式的使用确实很方便,但是如果可以,在设计初期就预防了命名的规范问题,在发生这些问题之前杜绝发生,就不会用到适配器模式。初学设计模式,如有理解错误,感谢指出!
相关文章推荐
- 设计模式<一>适配器模式
- 设计模式<一>——适配器模式
- Docker <一> 架构简介与Linux上安装
- posix线程库<一>
- Solr 数据导入 <一>DIH简单使用
- 四级核心词汇表<一>
- Windows学习笔记7——文字输出<一>
- 设计模式->结构型模式->适配器模式
- 使用SimpleXml解析xml数据<一>
- django<一>
- 常见java考试题与面试题<一>
- u-boot串口和stdio、console初始化及相关操作详解<一>
- 潜移默化学会WPF(安全篇<一>)--MD5加密三种方法加实践
- spring整合activeMq 调试JMS<一>
- C#委托-匿名函数-Lambda三者关系<一>
- Spring Boot <一> 初识了解
- Spring Cloud原理分析及使用<一>
- Spark调优之旅<一>
- Java集合<一>
- Linq学习<一>