适配器设计模式是一种常用的软件设计模式,主要用于将一个类的接口转换成另一个客户端所期望的接口形式。下面我将为你展示适配器设计模式的类图和代码示例。
适配器设计模式的类图:
假设我们有一个不兼容的接口A和接口B,我们希望使用接口A的实例,但是客户端需要的是接口B的实例,在这种情况下,我们可以使用适配器模式来适配接口A和接口B,类图如下:
接口A (Interface A) 接口B (Interface B) 适配器类 (Adapter Class) 实现接口B,内部持有接口A的实例 客户端类 (Client Class) 使用接口B的方法
适配器设计模式的代码示例:
假设我们有一个不兼容的类Source
和一个目标接口Targetable
,我们希望将Source
类适配为Targetable
接口,以便客户端能够使用目标接口的方法,下面是相应的Java代码示例:
// 目标接口 public interface Targetable { void methodA(); void methodB(); } // 源类(不兼容) public class Source { public void methodSourceSpecific() { } } // 适配器类,实现了目标接口并持有源类的实例 public class Adapter implements Targetable { private Source source; // 源类的实例 public Adapter(Source source) { this.source = source; } // 通过构造函数注入源类的实例 @Override public void methodA() { } // 可能需要调用源类的方法或实现其他逻辑 @Override public void methodB() { } // 可能需要调用源类的方法或实现其他逻辑 } // 客户端类使用目标接口的方法 public class Client { public static void main(String[] args) { Source source = new Source(); // 创建源类的实例 Targetable target = new Adapter(source); // 创建适配器类的实例并传入源类的实例作为参数 target.methodA(); // 使用目标接口的方法,实际上调用的是适配器的实现方法,内部可能调用了源类的方法或实现了其他逻辑。 target.methodB(); // 同上。 } }
在这个例子中,我们通过创建一个适配器类来适配不兼容的源类和目标接口,适配器类实现了目标接口并持有源类的实例,通过调用源类的方法和实现自己的逻辑来提供目标接口的接口功能,这样客户端就可以使用目标接口的实例和方法了。