设计模式 适配器模式(Adapter)

适配器模式的做用是将一个类的接口转换成客户但愿的另一个接口,使得本来因为接口不兼容而不能一块儿工做的那些类能够一块儿工做。作法是将类本身的接口包裹在一个已存在的类中。这种类型的设计模式属于结构型设计模式html

UML角色:设计模式

Source:须要被适配的类、接口、对象,即Datas。 
Destination:须要获得的类,Source经过适配获得的类对象,也就是咱们期待获得的借口。 
Adapter:适配器类,协调Source和Destination,使二者可以协同工做。ide

实现方式:测试

类的适配器模式(采用继承实现)
对象适配器(采用对象组合方式实现)
接口的适配器模式spa

应用场景:设计

系统须要使用现有的类,但现有的类却不兼容。
须要创建一个能够重复使用的类,用于一些彼此关系不大的类,并易于扩展,以便于面对未来会出现的类。
须要一个统一的输出接口,可是输入类型却不可预知。code

 

类适配器模式示例分析htm

使用情景:当咱们要访问的接口A中没有咱们想要的方法 ,却在另外一个接口B中发现了合适的方法,咱们又不能改变访问接口A,在这种状况下,咱们能够定义一个适配器C来进行中转,这个适配器C要实现咱们访问的接口A,这样咱们就能继续访问当前接口A中的方法,而后再继承接口B实现类B1,这样咱们能够在适配器C中访问接口B的方法了,这时咱们在适配器C中的接口A方法中直接引用B1中的合适方法,这样就完成了一个简单的类适配器。对象

以ps2与usb的转接为例blog

ps2接口:Ps2

1 public interface Ps2 {
2     void isPs2();
3 }

USB接口:Usb

1 public interface Usb {
2     void isUsb();
3 }

USB接口实现类:Usber

public class Usber implements Usb {
     @Override
    public void isUsb() {
         System.out.println("USB口");
     }
 
 } 

适配器:Adapter

public class Adapter extends Usber implements Ps2 {

     @Override
     public void isPs2() {
         isUsb();
     }
 
 }

测试类:Clienter

1 public class Clienter {
2 
3     public static void main(String[] args) {
4         Ps2 p = new Adapter(new Usber());
5         p.isPs2();
6     }
7 
8 }

结果显示:

USB口

实例讲解:

  我有个ps2插头的设备,可是主机上只有适配usb插头的接口,因此要找个转换器,将ps2插头转换成为USB插头就可让主机访问到ps2设备了。

  接口Ps2:描述ps2接口格式

  接口Usb:描述USB接口格式

  类Usber:是接口Usb的实现类,是具体的USB接口格式

  Adapter:用于将ps2接口格式转换成为USB接口格式

 

参考连接:https://www.cnblogs.com/V1haoge/p/6479118.html

相关文章
相关标签/搜索