设计模式-配适器模式

UML类图

在这里插入图片描述

使用场景

希望复用一些已经存在的类或方法,但这些方法不能直接转换成目标接口,所以需要增加配适器中转。如Client中耦合的是Target类,希望复用Adaptee中的方法,而Adaptee非Target的子类,因此Adaptee和Target中大量函数名可能不一样,因此无法在不修改Client中大量代码的情况下直接复用Adaptee类,所以需要增加配适器,即Target的子类Adapter,在Adapter中直接调用希望复用的Adaptee的方法即可。

代码实现

客户端中已经耦合的抽象方法

public interface Target {
	public boolean request();
}

可以复用的类

public class Adaptee {
	public boolean httpRequest(){
		System.out.println("一个Http Request");
		return true;
	}
	//..其他方法
}

在Client中希望不修改原有的耦合抽象类就能直接使用Adaptee中的方法

public class Client {
	public static void main(String[] args) {
		Target target = new Adapter();	
		target.request();	//由于使用了配适器,因此无需修改程httpRequest()就能直接使用Adaptee中的方法
		//target.otherMethods();	...省略其他函数的调用
	}
}

配适器

/**
 * 配适器类,主要负责调用adaptee中相同性质的方法,或需要复用的方法。
 */
public class Adapter implements Target {
	private Adaptee adaptee = new Adaptee();
	@Override
	public boolean request() {
		return adaptee.httpRequest();
	}
}

注意

在系统的设计之初,一般不考虑该模式,甚至避免使用该模式,该模式主要在已经存在的类和函数进行复用的情况下使用。

猜你喜欢

转载自blog.csdn.net/qq_25956141/article/details/86542677