適配器模式又分爲類適配器,和對象適配器模式.接下來我來演示一下
類適配器
1.首先定義一個被適配者
/**
* @program: design
* @description: 被飾配者
* @author: lyc
* @create: 2019-03-23 09:13
**/
public class Adaptee {
public void adapterRequest(){
System.out.println("被適配者的方法");
}
}
2.定義目標接口
public interface Target {
void request();
}
3.定義創建一個真實的目標實現目標接口
public class ConcreteTarget implements Target {
@Override
public void request() {
System.out.println("ConcreteTarget目標的方法");
}
}
4.創建一個適配者繼承被適配者實現目標接口
/**
* @program: design
* @description: 適配者
* @author: lyc
* @create: 2019-03-23 09:18
**/
public class Adapter extends Adaptee implements Target {
@Override
public void request() {
//調用父類的方法
super.adapterRequest();
}
}
5.測試
public class Test {
public static void main(String[] args) {
Target target=new ConcreteTarget();
target.request();
//因爲Adapter是實現了Targrt接口
Target adapter=new Adapter();
adapter.request();
}
}
對象適配器
與類適配器不同的是對象適配器不需要繼承.是通過組合的方式
1.首先定義一個被適配者
/**
* @program: design
* @description: 被飾配者
* @author: lyc
* @create: 2019-03-23 09:13
**/
public class Adaptee {
public void adapterRequest(){
System.out.println("被適配者的方法");
}
}
2.定義目標接口
public interface Target {
void request();
}
3.定義創建一個真實的目標實現目標接口
public class ConcreteTarget implements Target {
@Override
public void request() {
System.out.println("ConcreteTarget目標的方法");
}
}
4.創建一個適配者實現目標接口
public class Adapter implements Target {
//把被適配者組合進來
private Adaptee adaptee=new Adaptee();
@Override
public void request() {
adaptee.adapterRequest();
}
}
5.測試
public class Test {
public static void main(String[] args) {
Target target= new ConcreteTarget();
target.request();
//因爲Adapter是實現了Targrt接口
Target adapter=new Adapter();
adapter.request();
}
}
結果
ConcreteTarget目標的方法
被適配者的方法