設計模式c#語言描述——適配器模式

來源:互聯網
上載者:User
設計 設計模式c#語言描述——適配器(Adapter)模式



*本文參考了《JAVA與模式》的部分內容,適合於設計模式的初學者。



適配器模式把一個類的介面變換成用戶端所期待的另一種介面,從而使原本因介面不匹配而無法在一起工作的兩個類能夠在一起工作。包括類的適配器模式和對象的適配器模式兩種不同的形式。



類的適配器模式把被適配的類的API轉換成為目標類的API,其靜態結構圖表如下:







模式的角色如下:

目標(Target)角色:這就是所期待得到的介面。注意這裡討論的是類的適配器模式,因此目標不可以是類。

源(Adaptee)角色:現有需要適配的介面。

適配器(Adapter)角色:把源介面轉換成目標介面。



Target;

public interface Target

{



void sampleOperation1();



void sampleOperation2();//源類不包含的方法



}// END INTERFACE DEFINITION Target



Adaptee;

public class Adaptee

{



public void sampleOperation1()

{



}



}// END CLASS DEFINITION Adaptee



Adapter;

public class Adapter : Adaptee,Target

{



public void sampleOperation2()

{

}



}// END CLASS DEFINITION Adapter



類的適配器模式的效果:

使用一個具體類把源適配到目標中,這樣一來,如果源以及源的子類都使用此類適配,就形不通了。

由於適配器類是源的子類,因此可以在適配器類中置換掉(Override)源的一些方法。



與類的適配器模式相似,對象的適配器模式把被適配的類的API轉換成目標類的API,與類的適配器模式不同,對象的適配器模式不是使用繼承關係串連到Adaptee類,而是使用委派關係,類圖如下所示:







Target;

public interface Target

{



void sampleOperation1();



void sampleOperation2();



}// END INTERFACE DEFINITION Target



Adaptee;

public class Adaptee

{



public void sampleOperation1()

{



}



}// END CLASS DEFINITION Adaptee



Adapter:

public class Adapter : Target

{



private Adaptee adaptee;



public void Adapter(Adaptee adaptee)

{

this.adaptee=adaptee;

}



public void sampleOperation1()

{

adaptee.sampleOperation1();

}



public void sampleOperation2()

{



}



}// END CLASS DEFINITION Adapter



對象適配器模式的效果:

一個適配器可以把多種不同的源適配到同一個目標。也就是說,同一個適配器可以把源類和它的子類都適配到目標介面。

與類的適配器相比,要想置換源類的方法就不容易。如果一定要置換源類的方法,就只好先做一個源類的子類,將方法置換掉,再把源類的子類當作真正的源進行適配。




相關文章

Alibaba Cloud 10 Year Anniversary

With You, We are Shaping a Digital World, 2009-2019

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。