适配器模式
@auther lisiwen
@createTime 2019/12/23
适配器模式(Adapter):将一个类的几口转换为客户希望的另外一个接口。Adapter模式似的原本由于接口不兼容而不能一起工作的那些 类可以一起工作。
适配器模式结构图
代码示例
Target.java
/**
* @ProjectName: designpattern
* @ClassName: Target
* @Description: 这个是客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口 代码如下
* @Author: lisiwen
* @Date: 2019/12/23 8:53
**/
public interface Target {
/**
* @Author lisiwen
* @Description 期待的接口
* @Date 2019/12/23 9:00
* @param
* @Return void
* @Throws
**/
void Request();
}
Adaptee.java
/**
* @ProjectName: designpattern
* @ClassName: Adaptee
* @Description: 需要适配的类
* @Author: lisiwen
* @Date: 2019/12/23 8:54
**/
public class Adaptee {
public void SpecificRequest(){
System.out.println("特殊请求!");
}
}
Adapter.java
/**
* @ProjectName: designpattern
* @ClassName: Adapter
* @Description: 通过在内部包装一个Adaptee对象,把源接口改成目标接口
* @Author: lisiwen
* @Date: 2019/12/23 8:55
**/
public class Adapter extends Adaptee implements Target{
@Override
public void Request(){
super.SpecificRequest();
}
}
Main.java
/**
* @ProjectName: designpattern
* @ClassName: Main
* @Description: 客户端代码
* @Author: lisiwen
* @Date: 2019/12/23 8:35
**/
public class Main {
public static void main(String[] args) {
Target target=new Adapter();
target.Request();
}
}
//控制台输出
特殊请求!
何时使用适配器模式:在想使用一个已经存在的类,但如果他的接口,也就是他的方法和你的要求不相同时,就应该考虑适配器模式,这时客户端代码可以调用同一个接口,代码更加简单,直接,紧凑。其实应该是在双方都不太容易修改的时候再使用适配器模式适配,而不是一有不同时就使用它。