1.适配器模式
- 用途:接口兼容
- 评价:复杂、冗余、难以调试,个人认为直接在旧系统那里封装一个新实现调用旧实现就好了
- 场景:系统A、B、C想调用同一个功能接口,但是实现细节存在差异时(其实就是入参和出参转化处理,封装在一个新的类)
// 旧系统接口
public interface IOldSystem
{
string GetData();
}
// 旧系统实现
public class OldSystem : IOldSystem
{
public string GetData()
{
return "Data from Old System";
}
}
// 新系统接口
public interface INewSystem
{
string FetchData();
}
// 新系统实现
public class NewSystem : INewSystem
{
public string FetchData()
{
return "Data from New System";
}
}
// 适配器类,使 OldSystem 可以适配 NewSystem 的接口
public class SystemAdapter : IOldSystem
{
private readonly INewSystem _newSystem;
// 构造函数注入 NewSystem
public SystemAdapter(INewSystem newSystem)
{
_newSystem = newSystem;
}
// 实现 IOldSystem 接口的方法,调用 NewSystem 的 FetchData 方法
public string GetData()
{
//【重点】这里还能对入参、出参作细节处理,不仅仅是返回新的实现
return _newSystem.FetchData();
}
}
class Program
{
static void Main(string[] args)
{
// 第一步:创建一个新系统的实例
//INewSystem newSystem = new NewSystem();
var newSystem = new NewSystem();
// 第二步:使用适配器将新系统适配到旧系统接口
IOldSystem adaptedSystem = new SystemAdapter(newSystem);
// 第三步:通过旧系统接口访问新系统的数据
Console.WriteLine(adaptedSystem.GetData());
}
}