適配器模式

適配器模式

定義
  1. 將一個接口轉換成客戶指望的另外一個接口。這裏的接口能夠指一個接口也能夠是一個類,一個方法。
  2. 使原本接口不兼容的類能夠一塊兒工做。
類型

結構型java

使用場景
  1. 已經存在的類,他的方法和需求不匹配時(方法結果相同或類似)
  2. 適配器模式不是軟件設計階段考慮的設計模式,是隨着軟件維護不一樣的產品、不一樣廠家形成的功能類似接口不一樣的狀況下的解決方案。
優勢
  1. 能提升類的透明性和複用性,現有的類的服用但不須要改變。
  2. 目標類和適配器類解耦,提升程序的擴展性。
  3. 符合開閉原則

下面開始看代碼,首先咱們來實現一下類適配器模式。先寫一個待適配的類。設計模式

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();
        //...
    }
}
複製代碼

這裏的話使用帶適配的類的對象來調用帶適配的方法。對象

相關文章
相關標籤/搜索