设计模式记录(3.1)
第四部分 结构模式
第二十二章 适配器模式
适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法再一起工作的两个类能够在一起工作。
它同时也叫做变压器模式和包装模式。
适配器的两种形式
适配器模式有类的适配器模式和对象的是撇弃模式。如下图,左边的是类适配器模式,右边的是对象适配器模式。
类的适配器模式的结构
类的适配器模式把被适配的类的API转换成目标类的API,结构图如下:
在上图中可以看出,Adaptee类并没有sampleOperation2()方法,而客户端要这个方法,为使客户端能够使用Adaptee类,提供一个中间环节,即类Adapter,把Adaptee的API与Target类的API衔接起来。Adapter和Adaptee是继承关系,这就决定了适配器的模式是类的。
代码如下:
Target的源代码:
package com.javapatterns.adapter.classAdapter;public interface Target { void sampleOperation1(); void sampleOperation2();}
package com.javapatterns.adapter.classAdapter;public class Adaptee { public void sampleOperation1(){}}
package com.javapatterns.adapter.classAdapter;public class Adapter extends Adaptee implements Target { public void sampleOperation2(){ // Write your code here }}
package com.javapatterns.adapter.objectAdapter;public interface Target { void sampleOperation1(); void sampleOperation2();}
package com.javapatterns.adapter.objectAdapter;public class Adaptee { public void sampleOperation1(){}}
package com.javapatterns.adapter.objectAdapter;public class Adapter implements Target { private Adaptee adaptee; public Adapter(Adaptee adaptee){ super(); this.adaptee = adaptee; } public void sampleOperation1(){ adaptee.sampleOperation1(); } public void sampleOperation2(){ // Write your code here } }