一、定义

将一个类的接口转换为客户端所期待的另一个接口,从而使原本因接口不匹配的多个类能一起工作。

二、类图表示

适配器模式

三、实现

1、Adaptee

package pattern.structual.adapter;

/**
 * 被适配者(受改造者)
 */
public class Adaptee {

	public void specificRequest(){
		System.out.println("called specificRequest()...");
	}
}

2、Adapter

package pattern.structual.adapter;

public interface Target {

	public void request();
}


package pattern.structual.adapter;

public class Adapter implements Target{

	private Adaptee adaptee = new Adaptee();
	
	@Override
	public void request() {
		System.out.println("do something...");
		adaptee.specificRequest();
	}

}

四、使用

package pattern.structual.adapter;

public class Client {

	public static void main(String[] args) {
		Target target = new Adapter();
		target.request();
	}
}

  • 程序输出:

do something...

called specificRequest()...

五、适用场合

  • 想使用一个已经存在的类,但它的接口不符合需求时
  • 想创建一个可以复用的类,使它与那些接口不一定兼容的类协同工作
  • 系统需要升级或扩展,又不想影响原有系统的稳定运行