博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式<一>适配器模式
阅读量:2401 次
发布时间:2019-05-10

本文共 1699 字,大约阅读时间需要 5 分钟。

设计模式概述见:

适配器模式的基本概念

适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法再一起工作的两个类能够在一起工作。

通俗地说就是两个相似功能的接口名字不一样而客户端需要他们名字一样。

什么时候使用适配器模式

当开发后期,两个功能相似的接口因为都不太容易改,或当调用别人类似功能的接口时,通过适配器模式返回客户端一致的接口。

使客户端能够统一地调用同一接口。

适配器模式怎么用

在前面提了,适配器模式使为了要给客户端一个一致的接口产生的。

也提过是因为两个接口都已经完善而不太容易修改的情况下才会使用适配器模式。
以下举一个例子来展示:
比如现在有一个将中文的中国人的类:

** * @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(); } }

此时,客户端使用的时候,只需要知道这是一个说中文的方法即可。

后记

适配器模式的使用确实很方便,但是如果可以,在设计初期就预防了命名的规范问题,在发生这些问题之前杜绝发生,就不会用到适配器模式。

初学设计模式,如有理解错误,感谢指出!

转载地址:http://mriob.baihongyu.com/

你可能感兴趣的文章
自己研究的一个场景物体剔除方法(转)
查看>>
通过例子学习Lua(3)----Lua数据结构(转)
查看>>
用OpenGL实现射线拣取对象程序设计(转)
查看>>
四大银行联手金山毒霸重拳出击(转)
查看>>
CCNA考场细节全接触(转)
查看>>
通过例子学习Lua(2)---Lua流程控制(转)
查看>>
GPU加速DiffuseCubeMap经典计算(转)
查看>>
D3D中的一项高级技术---渲染到纹理(转)
查看>>
用GameAPI函数制作二维动作游戏(转)
查看>>
C++源代码游戏编程---WinMain()函数集(转)
查看>>
在机器里安装FreeBSD,LINUX和WindowsXP操作系统(转)
查看>>
DDN综述-2(转)
查看>>
linux 下实用软件组合 -- 为你的 linux 减肥!(转)
查看>>
精通RPM之认识篇(转)
查看>>
实战apache+tomcat+mod_jk整合(转)
查看>>
Linux 内核解读入门(转)
查看>>
Apache httpd-2.0.47 + Tomcat 5.0 OR tomcat-4.1.24 + jk2 +(转)
查看>>
安装配置篇2 - IIS+resin(转)
查看>>
apache学习笔记一(安装apache2+php+resin)(转)
查看>>
原创之apache指令大全(转)
查看>>