1、核心意图:
将一个类的接口转换成客户希望的另外一个接口,从而使得原本由于接口不兼容而不能一起工作的类可以一起工作。
该模式的目标是通过一个代理(这里是Adapter),在原来的类(Adaptee)和客户(Client)之间进行协调,从而达到兼容的目的。其核心是解决一致性的问题。
2、适配器(Adapter)模式的构成
• 目标抽象角色(Target) :定义客户要用的特定领域的接口
• 适配器(Adapter) :调用另一个接口,作为一个转换器
• 适配器(Adaptee) :定义一个接口,Adapter需要接入
• 客户端(Client) :协同对象符合Adapter适配器
3、适配器的分类
– 类适配器(采取继承的方式)
– 对象适配器(采取对象组合的方式)
推荐
4、适用性
• 对象需要利用现存的并且接口不兼容的类。
• 需要创建可重用的类以协调其他接口可能不兼容的类。
5、身边例子
在我们实际生活中也很容易看到这方面的例子,比如我们要和一个外国人打交道,例如韩国 人,如果我们没有学习过韩语,这个韩国人也没有学习过我们汉语,在这种情况下,我们之间是很难进行直接交流沟通。为了达到沟通的目的有两个方法:
1)改造 这个韩国人,使其能够用汉语进行沟通;
2)请一个翻译,在我们和这个韩国人之间进行语言的协调。
显然第一种方式——改造这个韩国人的代价要高一些,我们不 仅要重新培训他汉语的学习,还有时间、态度等等因素。
而第二种方式——请一个翻译,就很好实现,而且成本低,还比较灵活,当我们想换个日本人,再换个翻译 就可以了。
6、代码实现
Target.java
public interface Target
{
public void method1();
}
Adapter.java
public class Adapter extends Adaptee implements Target
{
@Override
public void method1()
{
this.method2();
}
}
Adaptee.java
public class Adaptee
{
public void method2()
{
System.out.println("执行方法!");
}
}
Client.java
public class Client
{
public static void main(String[] args)
{
Target target = new Adapter();
target.method1();
}
}