Adapter(適配器) -- 類對象結構型模式設計模式
㈠意圖:框架
將一個類的接口(方法)轉換成客戶但願的另一個接口(方法).Adapter模式使得本來因爲接口不兼容而不能一塊兒工做的那些類能夠一塊兒工做.ide
-- GOF <<設計模式>>this
要實現Adapter模式有兩種方式設計
①:類繼承(類適配器,採用繼承的方式)對象
②:對象適配器(採用對象組合的方式,推薦),不用增長新的子類.繼承
㈡UML示意圖:接口
①:類繼承方式的適配器模式:get
②:對象適配器(採用對象組合方法的UML圖)it
㈢Adpater(適配器)模式中的角色介紹:
①:目標對象角色
---定義用戶須要用到的特定領域的接口(UML圖中的Target)
②:適配器(Adaptee)
---要轉換的接口
③: Adapter:提供接口的轉換做爲一個轉換器(核心)
④: Client: 協同對象符合Adapter適配器.
㈣:代碼實現:
(基於類繼承方式的適配器)
/**
* Adapter模式的目標角色;
*/
package com.skywares.designpattern.adapter;
public interface Target
{
public void method1();
}
/**
* Adapter模式的適配器角色 -- 要執行的方法;
*/
package com.skywares.designpattern.adapter;
public class Adaptee
{
public void method2()
{
System.out.println("目標方法....... to call!");
}
}
/**
* Adapter模式的適配器角色 --轉換器;
*/
package com.skywares.designpattern.adapter;
public class Adapter extends Adaptee implements Target
{
/*
* 經過調用method1間接地就調用了Adaptee的method2的方法;
* 實質上是面向對象的繼承和多態的應用;調用父類的方法;
*/
@Override
public void method1()
{
this.method2();
}
}
/**
* Adapter模式的Client;
*/
package com.skywares.designpattern.adapter;
public class TestAdapter
{
/**
* @param args
*/
public static void main(String[] args)
{
Adapter adapter = new Adapter();
adapter.method1();
}
}
㈤: Adapter模式在Junit框架中的應用;
待補充....(結合反射技術來調用相應的方法)