1. 程式人生 > 實用技巧 >設計模式 之 構建型模式<一>介面卡模式(Adapter Pattern)

設計模式 之 構建型模式<一>介面卡模式(Adapter Pattern)

在物件介面卡模式結構圖中包含如下幾個角色:
● Target(目標抽象類):目標抽象類定義客戶所需介面,可以是一個抽象類或介面,也可以 是具體類。
● Adapter(介面卡類):介面卡可以呼叫另一個介面,作為一個轉換器,對Adaptee和Target進 行適配,介面卡類是介面卡模式的核心,在物件介面卡中,它通過繼承Target並關聯一個 Adaptee物件使二者產生聯絡。
● Adaptee(適配者類):適配者即被適配的角色,它定義了一個已經存在的介面,這個介面 需要適配,適配者類一般是一個具體類,包含了客戶希望使用的業務方法,在某些情況下可 能沒有適配者類的原始碼。

案例:
Sunny軟體公司OA系統需要提供一個加密模組,將使用者機密資訊(如口令、郵箱等)加 密之後再儲存在資料庫中,系統已經定義好了資料庫操作類。
為了提高開發效率,現需 要重用已有的加密演算法,這些演算法封裝在一些由第三方提供的類中,有些甚至沒有源代 碼。
試使用介面卡模式設計該加密模組,實現在不修改現有類的基礎上重用第三方加密 方法

目標抽象類
//目標抽象類
public interface DataBase {
    //加密使用者名稱和密碼
    public String EncryptionPwd(String pwd);
    public String EncryptionUser(String user);

}
View Code

適配者

//適配者
public class Encryption {
    
//加密演算法 public String EncryptionUser(String data){ return "返回加密後的資料"; } }
View Code
介面卡
//介面卡類
public class Adapter implements DataBase {
    Encryption encryptio=null;
    public Adapter(){
        encryptio=new Encryption();
    }

    @Override
    public String EncryptionPwd(String pwd) {
         
return encryptio.EncryptionUser(pwd); } @Override public String EncryptionUser(String user) { return encryptio.EncryptionUser(user); } }
View Code