天天看點

Java擴充卡模式(adapter)

文章目錄

   擴充卡模式

       什麼是擴充卡模式

       模式中的角色

       擴充卡的實作方式

           1.類擴充卡方式

           2.對象擴充卡方式

       工作中的場景

 本文介紹下java設計模式中的擴充卡模式

擴充卡模式

什麼是擴充卡模式

 将一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原本由于接口不相容而不能一起工作的那些類可以在一起工作。

模式中的角色

   目标接口(Target):客戶所期待的接口。目标可以是具體的或抽象

   的類,也可以是接口。

   需要适配的類(Adaptee):需要适配的類或适配者類。

   擴充卡(Adapter):通過包裝一個需要适配的對象,把原接口轉換成

   目标接口

擴充卡的實作方式

Java擴充卡模式(adapter)

1.類擴充卡方式

被适配的類

/**
 * 被适配的類
 * (相當于例子中的,PS/2鍵盤)
 * @author Administrator
 *
 */
public class Adaptee {
    
    public void request(){
        System.out.println("可以完成客戶請求的需要的功能....");
    }
}      

目标類

/**
 * 定義擴充卡的功能  目标類
 * @author dengp
 *
 */
public interface Target {
    /**
     * 處理請求的方法
     */
    void handleReq();
}      

擴充卡類

/**
 * 擴充卡 (類擴充卡方式)
 * (相當于usb和ps/2的轉接器)
 * @author 波波烤鴨
 *
 */
public class Adapter extends Adaptee implements Target {
    
    @Override
    public void handleReq() {
        super.request();
    }
}      

測試

public static void main(String[] args) {
    Client  c = new Client();
    Target t = new Adapter();
    t.handleReq();
}      

2.對象擴充卡方式

/**
 * 擴充卡 (對象擴充卡方式,使用了組合的方式跟被适配對象整合)
 * (相當于usb和ps/2的轉接器)
 * @author 波波烤鴨
 *
 */
public class Adapter2  implements Target {
    
    private Adaptee adaptee;
    
    @Override
    public void handleReq() {
        adaptee.request();
    }

    public Adapter2(Adaptee adaptee) {
        super();
        this.adaptee = adaptee;
    }
}      
public static void main(String[] args) {
    Adaptee a = new Adaptee();
    Target t = new Adapter2(a);
    t.handleReq();
}      

工作中的場景

   經常用來做舊系統改造和更新

   如果我們的系統開發之後再也不需要維護,那麼很多模式都是沒必要的,但是不幸的是,事實卻是維護一個系統的代價往往是開發一個系統的數倍。

JavaSE中使用到擴充卡模式的場景

   java.io.InputStreamReader(InputStream)

   java.io.OutputStreamWriter(OutputStream)

~适配模式比較簡單,就介紹到這兒了