博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式之适配器模式
阅读量:6087 次
发布时间:2019-06-20

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

    在我们的日常生活中购买笔记本电脑通常会赠送给我们一个电源适配器,通过这个适配器即使我们的电脑没有提供可以适配插座的插头也可以充电。在实际的开发中我们有时也会遇到同样的问题,这时我们就可以使用适配器模式。所谓适配器模式,就是把一个接口转化成用户所希望的接口,使用适配器模式可以让那些接口不兼容的类在一起工作。

    适配器模式有两种类型:一种叫类的适配器模式、一种叫对象的适配器模式。首先我们来介绍什么是类的适配器模式,不多说了直接上代码!

    首先定义一个目标的接口,也就是客户希望的使用的接口。

public interface Target {    public void targetMethod1();    public void targetMethod2();    }

在这个接口中有两个目标方法分别是targetMethod1和targetMethod2。接下来是我们已经有的一个实现类:

public class Adaptee {    public void targetMethod2(){       System.out.println("Adaptee的实现");        }}

在这个实现类里面只实现了一个targetMethod2方法,所以这个时候我们需要一个适配器。

public class Adapter extends Adaptee implements Target {    @Override    public void targetMethod1() {        System.out.println("Adapter的实现");    }}

客户端调用:

public static void main(String[] args) {        Target target = new Adapter();        target.targetMethod1();        target.targetMethod2();    }运行结果:Adapter的实现Adaptee的实现

通过代码可以看出适配器类是通过继承关系连接到了被适配对象。下面要介绍的对象的适配器模式使用的是组合委派的方式连接到被适配对象。其中目标接口和被适配对象不变。修改适配器类的代码:

public class Adapter implements Target {        private Adaptee apaptee;        public Adapter(Adaptee apaptee){        this.apaptee = apaptee;    }    @Override    public void targetMethod1() {        System.out.println("Adapter的实现");    }    @Override    public void targetMethod2() {        this.apaptee.targetMethod2();    }}

对于类适配器模式和对象适配器模式建议使用对象适配器模式,多用组合少用继承,当然也要根据具体的情况在具体的分析。

转载于:https://www.cnblogs.com/suyang-java/p/10350865.html

你可能感兴趣的文章
Flex前后台交互,service层调用后台服务的简单封装
查看>>
MySQL入门12-数据类型
查看>>
Windows Azure 保留已存在的虚拟网络外网IP(云服务)
查看>>
修改字符集
查看>>
HackTheGame 攻略 - 第四关
查看>>
js删除数组元素
查看>>
带空格文件名的处理(find xargs grep ..etc)
查看>>
华为Access、Hybrid和Trunk的区别和设置
查看>>
centos使用docker下安装mysql并配置、nginx
查看>>
关于HTML5的理解
查看>>
需要学的东西
查看>>
Internet Message Access Protocol --- IMAP协议
查看>>
Linux 获取文件夹下的所有文件
查看>>
对 Sea.js 进行配置(一) seajs.config
查看>>
第六周
查看>>
解释一下 P/NP/NP-Complete/NP-Hard 等问题
查看>>
javafx for android or ios ?
查看>>
微软职位内部推荐-Senior Software Engineer II-Sharepoint
查看>>
sql 字符串操作
查看>>
【转】Android布局优化之ViewStub
查看>>