1、适配器模式是什么?以及适配器中的角色问题

a、将一个类中的接口转换成客户希望的另外一个接口。Adapter 模式使得原来由于接口不兼容而不能在一起工作的那些类可以在一起工作。

b、模式中的角色:

-  目标接口(Target):客户所期待的接口。目标可以是具体的或者是抽象的类,也可以是接口。

-  需要适配的类(Adaptee):需要适配的类或者适配者类。

-  适配器(Adapter):通过包装一个需要适配的对象,把原来接口转换成目标接口。


2、简单的代码演示:(文字描述可能不太明白,看看代码就秒懂了)

a、创建 Adaptee 类、Target 接口、Adapter 类以及 Client 测试类(这个类为客户端测试类)。

package com.geeklicreed.adapter;
//被适配的类,满足客户端的某些请求
public class Adaptee {
	public void request(){
		System.out.println("可以满足客户端发送的一些请求");
	}
}
package com.geeklicreed.adapter;

public interface Target {
	void handleReq();
}
package com.geeklicreed.adapter;

public class Adapter implements Target {
	private Adaptee adaptee;

	public Adapter(Adaptee adaptee) {
		super();
		this.adaptee = adaptee;
	}

	@Override
	public void handleReq() {
		adaptee.request();
	}

}
package com.geeklicreed.adapter;

public class Client {
	public void test(Target t){
		t.handleReq();
	}
	
	public static void main(String[] args) {
		Adaptee adaptee = new Adaptee();
		Target target = new Adapter(adaptee);
		
		Client client = new Client();
		client.test(target);
		
		/*输出结果为:
		可以满足客户端发送的一些请求*/
	}
}


-  注:目标接口 Target 和 适配器 Adapter 类是实现的关系,而适配器 Adapter 和 被适配的 Adaptee 类是组合的关系。(也可以是继承的关系,适配器类 Adapter 继承被适配的 Adaptee 类。)


3、适配器模式的示例代码的类图:

wKioL1ki5DuB-NsaAAAN9huzU10806.png

4、工作中的场景:

- 经常用来做旧系统改造和升级。如果我们的系统开发之后再也不需要维护,那么很多的设计模式都是没有必要的。但是不幸的是,事实却是维护一个系统的代价往往是开发一个系统的数倍。