本文共 1685 字,大约阅读时间需要 5 分钟。
适配器模式(Adapter Pattern)是接口模式的一种。
将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作的模式(类似于变压器的模式)。
适配器模式涉及的角色包括:目标、客户、被适配者、适配器(核心)。
目标(Target):定义客户端使用的特定接口。 客户(Client):使用目标接口,与和目标接口一致的对象合作。 被适配者(Adaptee):需要被匹配的接口。 适配器(Adapter):负责把Adaptee的接口转成Target的接口。适配器是一个具体的类,这是本模式的核心。类适配器、对象适配器
现在有2个类Target和Adaptee,类Target具有某些功能(request),但是需要一些模块(specialRequest)才能工作。使用适配器模式后的过程就是客户端调用Target接口的request方法,实际上是调用Adapter父类Adaptee的specialRequest方法。
//Target.java(目标)pubic interface Target { public void request();}//Adaptee.java(被适配者)public Class Adaptee { public void specialRequest() { }}//Adapter.java(适配者)public Class Adapter extends Adaptee implements Target { public void request() { this.specialRequest(); }}-----------------------------------------------------------------//Client.java(客户)public Class Client { public static void main(String[] args) { Target t = ..// new Adapter(); t.request(); }}
类适配器的特点:
对象适配器包含一个适配者的引用,也需要实现客户类需要的接口,其实就是给类实例化一个对象,通过引用来调用方法,其实就是把继承替换成了对象引用。
//Adapter.javapublic Class Adapter implements Target { Adaptee a = new Adaptee(); public void request(){ a.specialRequest(); }}-------------------[其余代码和上面完全一样]
类适配器是通过继承 适配者类实现的,适配器也需要是实现客户类所需的(目标类)接口。当客户对象调用适配器类的方法时,适配器内部调用它所继承的适配者的方法。
对象适配器包含一个适配器者的引用(reference),与类适配器相同,对象适配器也实现客户类所需要的接口。客户对象调用适配器类的方法时,适配器内部调用它所包含的适配器者实例的方法。
还是那句话,不要为了使用而使用。在设计阶段没必要把类似的功能类的接口设计的不同。当接口不相同的时候,第一考虑不应该是用适配器,而是通过重构统一接口。
在开发后期或者维护阶段再考虑使用适配器。比如设计一个系统时使用第三方开发组件,这个组件的接口与系统接口不相同时,这时使用适配器就不用去为了迎合他们去改动自己的接口。上一篇:
下一篇:转载地址:http://clrai.baihongyu.com/