适配器模式:
将一个类的接口,转化成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。
适配器模式的结构:
适配器模式一般有三个部分:目标类/接口、被适配的对象、适配器类。
- 目标类/接口:我们想要使用的接口。
- 被适配的对象:已经存在的对象。这个对象和目标接口不兼容,但我们想能够想调用目标接口那样调用这个对象。
- 适配器类:实现该类,来让原本接口不相容的类可以兼容。它要继承/实现目标类/接口,并且应该持有一个被适配对象的句柄。
示例代码:
目标接口:
public interface Target {public void request();
}
被适配的对象:
public class Adaptee {public void specificRequest(){//业务代码}
}
适配器类:
public class Adapter implements Target{//持有需要被适配的接口对象private Adaptee adaptee;//构造器public Adapter(Adaptee adaptee){this.adaptee = adaptee;}//实现接口方法,它调用被适配对象的方法public void request() {adaptee.specificRequest();}
}
像上面这样,Adaptee类就可以适配成Target接口,在需要Target接口的地方可以使用Adater(被适配的Adaptee)。
适配器可以有类适配器和对象适配器两种实现。但Java无法实现类适配器因为类适配器需要多继承。
- 当需要使用一个现有的类而其接口不符合你的需要时,就使用适配器。
- 适配器将一个对象包装起来以改变其接口;装饰器将一个对象包装起来以增加新的行为和责任;而外观将一群对象“包装”起来以简化其接口。