結構型java
下面開始看代碼,首先咱們來實現一下類適配器模式。先寫一個待適配的類。設計模式
public class Adaptee {
public void adapteeRequest(){
System.out.println("被適配者的方法");
}
}
複製代碼
適配接口bash
public interface Target {
void request();
}
複製代碼
沒有通過適配的接口的實現類ide
public class ConcreteTarget implements Target {
@Override
public void request() {
System.out.println("concreteTarget目標方法");
}
}
複製代碼
適配器登場,適配器類繼承了待適配的類,同時實現了適配接口,因此咱們直接使用super調用父類方法便可。測試
public class Adapter extends Adaptee implements Target{
@Override
public void request() {
//...業務邏輯
super.adapteeRequest();
//...
}
}
複製代碼
測試類spa
public class ClassadapterTest {
public static void main(String[] args) {
Target target = new ConcreteTarget();
target.request();
Target adapterTarget = new Adapter();
adapterTarget.request();
}
}
複製代碼
運行結果設計
concreteTarget目標方法
被適配者的方法
複製代碼
咱們下面實現一下使用對象組合的方式類實現適配模式,通常狀況下咱們推薦使用對象組合的方式來實現適配器模式。在使用對象組合的方式咱們的待適配類的和適配接口以及原來的接口實現類都是同樣的惟一須要改變的就是適配類。code
public class Adapter implements Target{
private Adaptee adaptee = new Adaptee();
@Override
public void request() {
//...
adaptee.adapteeRequest();
//...
}
}
複製代碼
這裏的話使用帶適配的類的對象來調用帶適配的方法。對象