适配器模式(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#
- https://github.com/WeihanLi/DesignPatterns/tree/master/StructurePattern/AdapterPattern
- https://github.com/dotnet/extensions/blob/v3.1.6/src/Hosting/Hosting/src/Internal/ServiceFactoryAdapter.cs
- https://github.com/dotnet/extensions/blob/v3.1.6/src/Hosting/Hosting/src/HostBuilder.cs