設計模式之適配器模式
- 2020 年 7 月 23 日
- 筆記
設計模式之適配器模式
Intro
適配器模式(Adapter
),將一個類的介面適配成用戶所期待的。一個適配允許通常因為介面不兼容而不能在一起工作的類工作在一起,做法是將類自己的介面包裹在一個已存在的類中。也被稱為 Wrapper 模式。
通常這個類是外部的類,不能直接修改,所以需要做一層包裝,以適配現有的介面。
Prototype
實現適配器模式,通常有這幾個組件
Target
: 一個標準模式的類型,標準化介面Adaptee
: 一個需要適配的類型,特殊類型TargetAdapter
:Adaptee
針對Target
的適配器
public class Target
{
public virtual void Request()
{
Console.WriteLine("This is a common request");
}
}
public class Adaptee
{
public void SpecialRequest()
{
Console.WriteLine("this is a special request");
}
}
public class TargetAdapter : Target
{
private readonly Adaptee _adaptee = new Adaptee();
public override void Request()
{
_adaptee.SpecialRequest();
}
}
More
asp.net core 中的應用實例:
之前介紹的 asp.net core 3.x 里引入了 ServiceProviderFactory
,使得 .net core 可以更方便的集成第三方的依賴注入框架,這裡使用了適配器模式通過 ServiceFactoryAdapter
來適配各種不同的第三方的依賴注入框架
更多內容可以參考文末源碼
Reference
- //github.com/WeihanLi/DesignPatterns/tree/master/StructurePattern/AdapterPattern
- //github.com/dotnet/extensions/blob/v3.1.6/src/Hosting/Hosting/src/Internal/ServiceFactoryAdapter.cs
- //github.com/dotnet/extensions/blob/v3.1.6/src/Hosting/Hosting/src/HostBuilder.cs