适配器模式(Adapter Pattern)说白了就是把一个接口实现类转换成另外一个接口对象。先看代码:
1 // 目标接口 2 public interface ITarget 3 { 4 void Request(); 5 } 6 7 // 原本不兼容的类 8 public class Adaptee 9 { 10 public void SpecificRequest() 11 { 12 Console.WriteLine("Adaptee's specific request."); 13 } 14 } 15 16 // 适配器类 17 public class Adapter : ITarget 18 { 19 private readonly Adaptee adaptee; 20 21 public Adapter(Adaptee adaptee) 22 { 23 this.adaptee = adaptee; 24 } 25 26 public void Request() 27 { 28 // 通过适配器调用原本不兼容类的方法 29 adaptee.SpecificRequest(); 30 } 31 } 32 33 // 客户端代码 34 public class Client 35 { 36 public static void Main(string[] args) 37 { 38 Adaptee adaptee = new Adaptee(); 39 ITarget target = new Adapter(adaptee); 40 41 target.Request(); // 输出:"Adaptee's specific request." 42 } 43 }
八股:
适配器模式(Adapter Pattern)是一种结构型设计模式,它允许将一个类的接口转换成客户端期望的另一个接口,从而使得原本不兼容的类能够一起工作。适配器模式可以解决不同接口之间的兼容性问题,使得不需要修改现有代码就可以让多个类协同工作。
适配器模式中包含三种主要角色:
-
目标接口(Target):目标接口是客户端期望的接口,适配器类将原本不兼容的类转换成这个目标接口。
-
适配器类(Adapter):适配器类实现目标接口,并包含一个对原本不兼容类的引用,通过适配器类的方法调用原本不兼容类的方法,从而实现目标接口。
-
原本不兼容的类(Adaptee):原本不兼容的类是客户端需要使用的类,但它的接口与目标接口不兼容。
适配器模式的核心思想是通过适配器类将原本不兼容的类进行包装,使得它们能够在目标接口下工作。这样,客户端就可以通过目标接口来调用原本不兼容类的方法,而不需要关心实际的实现细节。