介面卡模式的意圖在於,使用不同介面的類所提供的服務為客戶端提供它所期望的介面。
如上圖所示,當我們需要適配現有**時,可能會發現客戶端開發人員已經事先考慮到這種情形。開發人員為客戶端使用的服務提供了介面。該介面宣告了client類所要呼叫的requiredmethod方法。在existingclass類中,則定義了usefullmethod方法,它是client類需要的實現。
若要對existingclass類進行適配,滿足客戶端物件的需要,就可以編寫乙個繼承自existingclass,並同時實現requiredinte***ce介面的類,通過重寫requiredmethod方法將客戶端的請求委派給usefullmethod方法。
以下通過**進行說明:
public class client
//該方法為client真正要完成的工作
public void dosth()
}
public inte***ce requiredinte***ce
public class existingclass
}
public class newclass extends existingclass implements requiredinte***ce
}
public static void main( string args )}
以上的設計屬於類的介面卡,通過子類進行適配。在類的介面卡中,新的介面卡類實現了需要的介面,並繼承自現有的類。當你需要適配的一組方法並非唄定義在介面中時,這種方式就不奏效了。
這種方式的介面卡使用了委派而非繼承。
如上所示,newclass類是介面卡的乙個例子,該類的例項同時也是requiredclass類的例項。換言之,newclass類滿足了客戶端的需要。newclass類通過existingclass例項物件,可以將existingclass類適配為符合客戶端的需要。
public class client
//該方法為client真正要完成的工作
public void dosth()
}
public class requiredclass
}
public class newclass extends requiredclass
@override
public void requiredmethod()
}
public static void main( string args )
}
注意區分:類的介面卡繼承自現有的類,同時實現目標介面;物件介面卡繼承自目標類,同時引用現有的類;
JAVA設計模式之介面卡模式
先總結一下整個過程的感想 感覺在網上找了很多資料,大部分大牛們把這個設計模式解釋的很仔細,但是用詞實在過於專業,很難讓初學者讀懂,自己找了乙個比較恰當的例子寫了一遍,對這個設計模式有了一定的認識,希望這種解釋可以得到認可。其實總結一下介面卡模式的最終目的 在乙個沒有實現某個介面的類,想在這個介面中規...
Java設計模式之介面卡模式
1 使用場景 介面卡模式把乙個類的介面變換成客戶端所期待的另一種介面。以消除由於介面的不匹配所造成類的相容性問題。介面卡模式主要有類的介面卡模式 物件的介面卡模式兩種。2 兩種介面卡模式介紹 模式所涉及的角色有 目標 target 角色 這就是所期待得到的介面。源 adapee 角色 現在需要適配的...
Java設計模式之介面卡模式
介面卡就是一種適配中介軟體,它存在於不匹配的二者之間,用於連線二者,將不匹配變得匹配,簡單點理解就是平常所見的轉接頭,轉換器之類的存在。介面卡模式有兩種 類介面卡和物件介面卡 二者在實現上有些許區別,作用一樣。1 類介面卡模式 原理 通過繼承來實現介面卡功能。當我們要訪問的介面a中沒有我們想要的方法...