一、定义
将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在 一起工作。
二、要素
1.Target目标
即客户端期望的接口
2.Adaptee源
即原本不匹配的接口
3.Adapter适配器
三、代码实例
//适配目标
public interface Target {
public void targetShow(); }//适配源
public class Adaptee {
protected void adapteeShow(){ System.out.print("适配器源方法\n"); }; }//适配器
public class Adapter extends Adaptee implements Target{
public void targetShow() {
System.out.print("适配器方法\n"); }}
//客户端
public class Client {
public static void main(String[] args) {
Adapter adapter = new Adapter(); adapter.adapteeShow();//适配器源方法 adapter.targetShow();//目标方法 } }四、优点
1.可以让两个没有任何关系的类在一起运行
2.提高类的复用度,源角色在原来的位置还可以正常使用,而目标角色也可以作为新的成员。
五、使用场景
在详细设计阶段最好不要考虑它,它是解决上线阶段项目的问题;适配器模式是一种“补救”模式,通常解决接口不兼容的问题,百分百完美设计是用不到的。
六、项目实例
项目中用到不同手机厂商提供的功能SDK(wifi、移动网络、usb禁用、照相、电话、短信、锁屏等等),但每个厂商提供的SDK中都满足了功能的需求,但每个功能的接口是不一样的(方法名、参数等等),而在我们自己的项目中,为了更好的支持上层业务需求,需要我们对上层提供统一的标准接口,这里就用到了适配器模式,用适配器将每个厂商提供的SDK接口转为标准的统一接口。