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;// 构造函数注入 NewSystempublic 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());}
}