适配器模式

xiaoxiao2021-02-28  34

1.使用场景:

由于接口不兼容,需要通过“适配器”来进行协调工作。

2.UML表示

适配器模式中总共有3种角色: 2.1目标接口 客户期待的接口。目标可以是具体的或抽象的类,也可以是接口。 2.2需要适配的类 需要适配的类或者适配者类。 2.3适配器 通过包装一个需要适配的对象,将原有的接口转换成目标接口。 具体的UML示意图如下:

 

3.代码实现

 

下面通过一个生活中的一个实际例子来对这种模式进行一个讲解: 串行口键盘类:

public class Ps2KeyBoard { public void request(){ System.out.println("打字very快!"); } }

这和我们的LapTop类并不兼容,但是我们不想要改代码呀,怎么办? 这时候就需要我们的适配器来完成这任务了!当然,在编写这个适配器之前我们需要定义一个接口,来对这个类的行为做一下规范。

 

public interface Target { void handleRequest(); }

实现适配器的方式有两种 方法1:继承方式

 

 

public class Adapter extends Ps2KeyBoard implements Target{ @Override public void handleRequest() { super.request(); } }

方法2:

 

 

public class Adapter2 implements Target{ private Ps2KeyBoard keyBoard; @Override public void handleRequest() { keyBoard.request(); } public Adapter2(Ps2KeyBoard keyBoard) { this.keyBoard = keyBoard; } }

LapTop类:

 

 

public class Laptop { public void test01(Target target){ target.handleRequest(); } public static void main(String[] args) { Laptop laptop=new Laptop(); Ps2KeyBoard ps2KeyBoard=new Ps2KeyBoard(); Target target=new Adapter(); laptop.test01(target);//方法1 Target target1=new Adapter2(ps2KeyBoard); laptop.test01(target1);//方法2 } }

 

4.总结

 

适配器模式主要是用来解决接口的不兼容问题,具体的解决思想,就是通过创建适配器类来对无法直接调用的对象进行包装,然后通过适配器类来调用这个不兼容的对象,返回我们需要的东西。 项目链接:https://github.com/memoryexplosion/design_pattern_review/tree/master/src/java/adapter

 

 

 

 

 

转载请注明原文地址: https://www.6miu.com/read-2623332.html

最新回复(0)