经典23种设计模式之适配器模式
什么叫做适配器模式?
适配器模式:通俗的将就是把一个类的接口转换成客户端所期待的另一种接口,从而使原来接口不匹配而无法在一起工作的两个类能在一起工作。
适配器所涉及的角色包括:目标,客户,被适配者,适配器
目标:定义一个客户端使用的特定接口。客户:使用目标接口,与目标接口一致的对象合作。被适配者:一个现存需要匹配的接口。适配器:负责将被适配的接口转化为目标的接口。但客户端调用适配器的时候,适配器便会调用被适配的操作相应请求,该模式完成了接口的适配过程。
使用适配器模式
在软件设计的前期,一般会统一好接口的设计,但是当我们设计一个系统的时候要使用第三方开发的组件,这个组件接口不同,又或许,我们不能得到这个组件的内部源码,或许我在修改接口所付出的成本大,这时候,我们就应该采用适配器模式。
适配器分类
-------------------------类适配器和对象适配器-------------------
类适配器:特点:1.适配器类(Adapter)实现目标接口;2适配器类(Adapter)通过继承来实现对Adapter类的复用。
源码举例:
Adapt:被适配器类 public class Adapt { public void specialRequest()
{
System.out.println("被适配器的方法");
}
}
//目标的接口
public interface Target{
public void request();
}
//Adapter:适配器
public class adapter extends Adapt implements Target{
public void request()
{
this.specialRequest();
}
}
//客户端
public class Client{
public static void main(String[] args)
{
Target t=......//new Adapter();
t.request();
}
}
//对象适配器
//----------------下面通过组合关系实现继承------------------------//
public class Adapter implements Target{
Adapt adapt=new Adapt();
public void request()
{
adapt.specialRequest();
}
}
//客户端
public class Client{
public static void main(String[] args)
{
Target t=new Adapter();
t.request();
}
}
类适配器与对象适配器的不同
类适配器是通过继承类适配器类实现的,另外类适配器实现客户端所需要的接口。当客户端调用适配器类的方法的适配器内部调用的是所继承的适配者的方法
对象适配器包含一个适配器者的引用,与类适配器相同,对象适配器也实现客户端所需要的目标接口,当客户端调用对象适配器的方法的时候,对象适配器调用它所包含的适配器者实例的适当方法