适配器模式

1.适配器模式 --Adapter

简单介绍下适配器模式

什么是适配器模式

简单来说,就是当两个类难以互通的时候,我们为了避免重新写某个类,而在他们之中加入一个类似于翻译官的职务–适配器。从而使得双方的类都不用重新编写,大大提高了维护效率和新版本迭代效率。

我们用生活中的例子来解释下吧,如下图:

我们常用的电脑和网线之间就是一个例子,随着笔记本电脑的不断变薄,网线已经很难接进笔记本里了,此时就需要一个适配器(usb)起到中间商的作用。使得既不用更改笔记本电脑,也不用更改网线,电脑也能正常上网。

(对适配器的抽象类的理解:因为电脑和网线接口有很多种,单一个适配器类肯定是不够的,于是就需要一个抽象接口来不断创建不同的适配器类)

我们尝试用代码实现

1.1类适配器实现

  • Adaptee 网线类
package Adapter;

//网线类(第一个类)
public class Adaptee {
    public void request() {
        System.out.println("连接上网");
    }

}
  • computer 两类之一
package Adapter;

public class Computer {
    //直接把适配器添加进去用适配器调用网线,从而上网
    public void net(netusb usb) {
        usb.haldlerequest();
    }
}
  • netusb 接口类
package Adapter;

public interface netusb {
    //提供个接口,给以后的适配器搭个框架
    public void haldlerequest();
}
  • Aadapter 适配器类
package Adapter;
//实际上的适配器
//继承了网线,又实现了接口抽象类的规范
public class Aadapter extends Adaptee implements netusb{

    @Override
    public void haldlerequest() {
        super.request();
    }
}
  • 测试类
package Adapter;

public class test {
    public static void main(String[] args) {
        Computer computer = new Computer();
        Aadapter aadapter = new Aadapter();
        computer.net(aadapter);
    }
}

连接成功!

1.2组合法(对象适配器)

现在这种方法虽说解决了我们的问题,但是存在缺陷。

一种适配器如果直接继承两个类中的一个,就减少了很多适配器的通用性,而且java不支持多继承,一个适配器就没办法适应两种网线。

于是,另一种方法诞生了------用组合法实现(对象适配器)

改动的类

  • Aadapter
package Adapter;
//实际上的适配器
//继承了网线,又实现了接口抽象类的规范
public class Aadapter  implements netusb{
     private Adaptee adaptee;
    @Override
    public void haldlerequest() {
       adaptee.request();
    }


    public void setAdaptee(Adaptee adaptee) {
        this.adaptee = adaptee;
    }
}

测试

package Adapter;

public class test {
    public static void main(String[] args) {
        Computer computer = new Computer();
        Adaptee adaptee = new Adaptee();
        Aadapter aadapter = new Aadapter();
        aadapter.setAdaptee(adaptee);
        computer.net(aadapter);
    }
}

连接成功!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值