适配器模式

为什么引入适配器模式

在生活中,我们使用的电器中,有的电压小于标准电压,这个时候,如果我们想使用该电器,我们通常的做法是使用一个变压器,将变压降低到该电器能够使用的电压,我们使用变压器将接口进行转化,将产生过大变压的接口转化为该电器可以使用的电压接口,这个变压器就是适配器。

适配器模式是什么

将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,别名为包装器。

核心思想

定义一个目标抽象类来定义客户所需接口,可以是一个抽象类或接口,然后定义一个适配器类,适配器可以调用另一个接口,作为一个转换器,对所需的接口进行适配,最后定义一个适配者类,即被适配的角色。

具体案例

我们有一个加密程序,现在有一个第三方库,需要进行加密,只不过还是使用原有的加密程序。要重用已有的加密算法,这些算法封装在第三方提供的类中,使用适配器模式设计加密模块。

UML:

代码

package com.dong.adaptor;

public interface EncryptionOperation {
	public void encryption();
}

package com.dong.adaptor;

public class Encryption {
	public void newEncryptionMethod() {
		System.out.println("use the new encryption");
	}
}

package com.dong.adaptor;

public class OperationEncryption implements EncryptionOperation {

	private Encryption encryption;
	
	public OperationEncryption() {
		this.encryption = new Encryption();
	}

	@Override
	public void encryption() {
		encryption.newEncryptionMethod();
	}

}

package com.dong.adaptor;

public class client {
	public static void main(String[] args) {
		OperationEncryption oe = new OperationEncryption();
		oe.encryption();
	}
}

优点

实现接口的转化,实现对原有接口的转接。

灵活,扩展性好。

缺点