1.概念:
把一個類的接口變換成客戶端所希望的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個類能夠在一起工作。
(就是將兩個類的方法組合起來,使其可以在一個類中使用!)
2.兩種形式
a.類的適配器模式 b.對象的適配器模式
http://www.iteye.com/topic/339198
http://www.iteye.com/topic/74417
1.概念:
適配器模式(Adapter Pattern)把一個類的接口變換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個類能夠在一起工作。
2.兩種形式
a.類的適配器模式 b.對象的適配器模式
3.模擬問題:
現在假設我們的程序已經設計了接口Request接口,但是現在有一個特殊的接口SpecificRequst能更好的完成我們的功能,但是它和我們現有的Request接口不匹配。那我們如何將它們一起工作呢?看下面的實例:
3.實例1:a.類的適配器模式 (繼承類、實現接口)
目標角色:
- public interface Target {
- public void request();
- }
源角色:
- public class Adaptee {
- public void specificRequest(){
- System.out.println("實現所需功能");
- }
- }
適配器角色:
- public class ClassAdapter extends Adaptee implements Target {
- public void request() {
- this.specificRequest();
- }
- }
用戶角色:
- public class TestClassAdapter {
- public static void main(String args[]){
- ClassAdapter adapter = new ClassAdapter();
- adapter.request();
- }
- }
3.圖示實例2:b.對象的適配器模式
實例代碼:
目標角色,源角色代碼不變。
適配器角色:
- public class ObjectAdapter implements Target {
- private Adaptee adaptee;
- public ObjectAdapter(Adaptee adaptee){
- this.adaptee = adaptee;
- }
- public void request() {
- adaptee.specificRequest();
- }
- }
用戶角色:
- public class TestOjbectAdapter {
- public static void main(String arg[]){
- Adaptee adaptee = new Adaptee();
- ObjectAdapter adapter = new ObjectAdapter(adaptee);
- adapter.request();
- }
- }