适配器模式

0x0 适配器模式介绍

要解决的问题

1、当一个新系统要是用老的系统的功能,而又发现接口不能融合时
2、系统需要使用现有的类,而此类的接口不符合系统的需要时。

组成

Target:客户期望的接口或者类
Adaptee:即将要适配的类
Adapter:适配器

好处

1、已经存在的类的接口不符合我们的需求;
2、创建一个可以复用的类,使得该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作;
3、在不对每一个都进行子类化以匹配它们的接口的情况下,使用一些已经存在的子类。

缺点

过多的使用适配器,会让系统非常零乱,不易整体进行把握。比如,明明看到调用的是A接口,其实内部被适配成了B接口的实现,一个系统如果太多出现这种情况,无异于一场灾难。因此如果不是很有必要,可以不使用适配器,而是直接对系统进行重构。

0x1 类图

适配器模式分2种,一种类模式,一种对象模式

适配器模式_第1张图片
类模式.png
适配器模式_第2张图片
对象模式.png

0x2 代码

Target


public interface Target {

public void request();

}

Adaptee


public class Adaptee {

public void specialRequest() {
    System.out.println("special rqquest !");
}

}


//public class Adapter extends Adaptee implements Target { //这个是类模式
public class Adapter implements Target {//这个是对象模式的适配
Adaptee adaptee;

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

@Override
public void request() {
    //适配
    this.adaptee.specialRequest();
}

}


public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
Target target = new Adapter(new Adaptee());
target.request();
}
}

你可能感兴趣的:(适配器模式)