用途
适配器模式 (Adapter)
将一个类的接口转换成客户希望的另外一个接口。
Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
适配器模式是一种结构型模式。
结构
aaarticlea/png;base64,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" alt="" />
图-适配器模式结构图
Target : 定义用户实际需要的接口。
abstract class Target { public abstract void Request(); }
Adaptee : 定义一个需要适配的接口。
class Adaptee { public void SpecificRequest() { System.out.println("特殊请求"); } }
Adapter : 通过在内部包装一个 Adaptee 对象,把源接口转换成目标接口。
class Adapter extends Target { private Adaptee adaptee = new Adaptee(); @Override public void Request() { adaptee.SpecificRequest(); } }
测试代码
public class AdapterPattern { public static void main(String[] args) { Target target = new Adapter(); target.Request(); } }
运行结果
特殊请求
应用场景
想要使用一个已经存在的类,但如果它的方法不满足需求时;
两个类的职责相同或相似,但是具有不同的接口时要使用它;
应该在双方都不太容易修改的时候再使用适配器模式适配,而不是一有不同时就使用它。