配接器模式介紹

配接器模式的作用就是把原本不兼容的介面,通過適配修改到統一的程序,使得用戶方便使用,
在實際作業中, 有時候我們需要把各個業務線的各種型別服務做統一的包裝,再對外提供介面進行使用,
配接器模式要解決的主要問題就是多種差異化型別的介面做統一輸出,
配接器可擔任兩個物件間的封裝器,它會接收對于一個物件的呼叫,并將其轉換為另一個物件可識別的格式和介面,
配接器模式通過封裝物件將復雜的轉換程序隱藏于幕后,被封裝的物件甚至察覺不到配接器的存在,
配接器模式結構
- 物件配接器
構成原則:配接器實作其中一個物件的介面,并對另一個物件進行封裝,
1、客戶端:包含當前程式業務邏輯的類,
2、客戶端介面:描述了其他類與客戶端代碼合作時必須遵循的協議,
3、服務:其中的有些功能類或方法,客戶端無法直接呼叫其功能,無法進行使用,
4、配接器:可以同時與客戶端和服務互動的類,它在實作客戶端介面的同時封裝了服務物件,配接器接受客戶端通過配接器介面發起的呼叫,并將其轉換為適用于被封裝服務物件的呼叫,
客戶端代碼只需通過介面與配接器互動即可,無需與具體的配接器耦合,這在服務類介面被更改或替換時很有用,你無需修改客戶端代碼就可以創建新的配接器類,
- 類配接器
通過繼承機制,配接器同時繼承兩個物件的介面,此種方式只在支持多重繼承的編程語言中實作,例如C++
類配接器不需要封裝任何物件,因為它同時繼承了客戶端和服務的行為,適配功能在重寫的方法中完成,最好生成的配接器可替代已有的客戶端類進行使用,
配接器模式優缺點
優點:
-
使得代碼干凈整潔,易于維護,減少大量重復的判斷和使用,讓代碼更加易于維護和擴展,
-
單一職責原則,可以將介面或資料轉換代碼從程式主要業務邏輯中分離,
-
開閉原則,客戶端代碼通過客戶端介面與配接器進行互動,你就能在不修改現有客戶端代碼的情況下在程式中添加新型別的配接器,
缺點:
- 代碼復雜度增加,需要增加很多介面和類
Demo
/// <summary>
/// 介面類,客戶端類
/// </summary>
public interface ITarget
{
string GetRequest();
}
/// <summary>
/// 被適配者 例如遺留老代碼,開源模塊等
/// </summary>
public class Adaptee
{
public string GetSpecificRequest()
{
return "特殊的請求 遺留的老代碼";
}
}
/// <summary>
/// 配接器
/// </summary>
public class Adapter:ITarget
{
private readonly Adaptee _adaptee;
public Adapter(Adaptee adaptee)
{
this._adaptee = adaptee;
}
/// <summary>
/// 顯示實作的介面類
/// 在這里可以呼叫遺留老代碼的方法,
/// </summary>
/// <returns></returns>
public string GetRequest()
{
return "我正在呼叫:" + _adaptee.GetSpecificRequest();
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Start Test Adapter Mode");
//實體化老代碼模塊
Adaptee tempAdaptee = new Adaptee();
ITarget adapter = new Adapter(tempAdaptee);
//通過實作的介面去呼叫老代碼模塊中的方法,
var showResult=adapter.GetRequest();
Console.WriteLine(showResult);
Console.ReadKey();
}
}

可以看到在上述代碼中,我們通過配接器去直接呼叫的老代碼中的方法,在我們平時的開發程序中,配接器使用的場景還是很多的,比如系統對開源組件的支持,多設備的支持等,對于設計模式而言,要學會注意它的使用場景,也只有在合適的場景下使用它,才能發揮它最大的效果,
配接器可以通過以不同抽象或介面實體為引數的建構式來識別,當配接器的任何方法被呼叫時,它會將引數轉換為合適的格式,然后將呼叫定向到其封裝物件中的一個或多個方法,
小寄語
人生短暫,我不想去追求自己看不見的,我只想抓住我能看的見的,
原創不易,給個關注唄,
我是阿輝,感謝您的閱讀,如果對你有幫助,麻煩點贊、轉發 謝謝,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/294597.html
標籤:.NET技术
上一篇:設計模式之配接器
