前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >适配器模式

适配器模式

作者头像
用户1148394
发布2018-01-09 17:00:26
7860
发布2018-01-09 17:00:26
举报
文章被收录于专栏:余林丰余林丰

适配器模式其实很简单,或者说学了设计模式到现在,虽然每次看到各种名字的设计模式就觉得很高端,但当真正了解过后才知道其实也没有那么玄乎,有的东西在我们平时的时候都已经用到过了。比如这次我们要说的适配器模式,说白了,就是以前的代码接口,和我们客户端需要调用的接口不一致,但以前代码功能又是我们想要的功能。这个时候我们不必去修改以前代码的接口,我们只需要新增加一个类的,这个类符合客户端需要调用的接口,而在这个是适配类里调用我们以前代码的接口,这样就能做到不修改以前代码的接口,也不修改客户端就能实现接口匹配。

image.png
image.png

UML类结构同样很简单,代码就不难写出。

代码语言:javascript
复制
 1 package day_26_adapter;
 2 
 3 /**
 4  * 客户端期待访问的目标接口,或者是类
 5  * @author turbo
 6  *
 7  * 2016年9月26日
 8  */
 9 public interface Target {
10     void request();
11 }
代码语言:javascript
复制
 1 package day_26_adapter;
 2 
 3 /**
 4  * 需要适配的类
 5  * @author turbo
 6  *
 7  * 2016年9月26日
 8  */
 9 public class Adaptee {
10     public void specificRequest(){
11         System.out.println("这是最终要用到的方法,或者需要适配的方法");
12     }
13 }
代码语言:javascript
复制
 1 package day_26_adapter;
 2 
 3 /**
 4  * 适配器,适配需要被适配的接口或类,以此提供接口给客户端
 5  * @author turbo
 6  *
 7  * 2016年9月26日
 8  */
 9 public class Adapter implements Target {
10     private Adaptee adaptee = new Adaptee();
11     
12     /* (non-Javadoc)
13      * @see day_26_adapter.Target#request()
14      */
15     @Override
16     public void request() {
17         adaptee.specificRequest();
18     }
19 
20 }
代码语言:javascript
复制
 1 package day_26_adapter;
 2 
 3 /**
 4  * 客户端
 5  * @author turbo
 6  *
 7  * 2016年9月26日
 8  */
 9 public class Client {
10     public static void main(String[] args){
11         Target target = new Adapter();
12         target.request();
13     }
14 }

适配器模式,并不是什么很高端看不懂的模式,也很简单。我们最后利用《大化设计模式》中的例子画出UML图(不再写出代码),一家篮球俱乐部里有一名外籍篮球运动员,但是教练和外籍运动员语言不同,当然不能换教练更不能换运动员,这个时候就有一个翻译在其中,翻译者充当的就是适配类角色,我们用这实际的例子来看看UML类结构是怎样的,以此来加深我们对适配器模式的理解。

image.png
image.png
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-09-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档