适配器模式

先来聊一聊结构性模式。

我们都知道创建型模式有五个:单例模式,工厂模式,抽象工厂,原型模式,建造者模式

那结构型模式有七个:适配器模式,桥接模式,装饰模式,组合模式,外管模式,享元模式,代理模式。

我们先来看一看适配器模式吧

比如一个USB转换接口,我们笔记本必须要插入转换器。

如图:
在这里插入图片描述

现在大脑里应该有三个类了,一个网线接口类,一个笔记本类,还有一个USB转换类

先看代码:
先来写一个网线的类


public class Adaptee {

    public void request(){
        System.out.println("连接上网");
    }
}

在写一个电脑的类

public class Computer {

    public void  net(NetToUsb adapter){

        adapter.handRequest();

}    

然后写一个接口转换器接口

//接口转换器的抽象实现
public interface NetToUsb {

    //作用:处理请求 ==》usb
    public void handRequest();

}

写一个适配器类

//真正的适配器 , 需要连接USB ,还有网线
public class Adapter extends Adaptee implements NetToUsb {

    @Override
    public void handRequest() {
        super.request();//可以上网了
    }
}

测试一下

public class Test {
	public static void main(Stringp[] args){
		 //电脑,适配器,网线
        Computer computer = new Computer();
        Adaptee adaptee=new Adaptee();
        Adapter adapter=new Adapter();
        computer.net(adapter);
	}
}

1.继承(类适配器,单继承)
2.组合(对象适配器:常用)

违反了我们的里氏替换原则

我们可以改进一下	
//真正的适配器 , 需要连接USB ,还有网线
public class Adapter2 implements NetToUsb {

    private Adaptee adaptee;

    public Adapter2(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    @Override
    public void handRequest() {
      adaptee.request();//可以上网了
    }
}

这里的测试就可以这样写

 public static void main(String[] args) {
        //电脑,适配器,网线
        Computer computer = new Computer();

        Adaptee adaptee=new Adaptee();

        Adapter2 adapter=new Adapter2(adaptee);

        computer.net(adapter);

    }

这样我们效率极高

定义:

  • 将一个类的接转换成客户希望的另一个接口。Apapter模式使得原本由于接口不兼容而不能一起工作的 那些类可以在一起工作

角色分析:

目标接口:客户所期待的接口,目标可以是具体的或抽象的类,也可以是接口
需要适配的类:需要适配的类或适配者类
适配器:通过包装一个需要适配的对象,把原接口换成目标对象

下面图片是适配器模式的优点,缺点,以及应用场景
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值