共有兩類適配器模式:
對象適配器模式
-- 在這種適配器模式中,適配器容納一個它包裹的類的實例。在這種狀況下,適配器調用被包裹對象的物理實體。
類適配器模式
-- 這種適配器模式下,適配器繼承自已實現的類(通常多重繼承)。
將一個類的接口轉換成客戶但願的另一個接口。
Adapter模式使得本來因爲接口不
兼容而不能一塊兒工做的那些類能夠一塊兒工做。——
Gang of Four
客戶:須要調用咱們的代碼的對象。
Adapter模式的宗旨:保留現有類所提供的服務,向客戶提供接口,以知足客戶的指望。
(1)類適配器:
當客戶在接口中定義了他指望的行爲時,咱們就能夠應用適配器模式,提供一個實現該接口的類,而且擴展已有的類,經過建立子類來實現適配。
下面是類適配器的UML圖:
(2)對象適配器:
對象適配器」經過組合除了知足「用戶期待接口」還下降了代碼間的不良耦合。在工做中推薦使用「對象適配」。下面是對象適配器的UML圖:
實例:spa
public interface IUserInfo
{
string getUserName { get; }
}
public class Adapter : IUserInfo
{
Adaptee adt = new Adaptee();
public string getUserName
{
get
{
return adt.getName();
}
}
}
public class Adaptee
{
public string getName()
{
return "new name";
}
}