适配器模式
为什么引入适配器模式
在生活中,我们使用的电器中,有的电压小于标准电压,这个时候,如果我们想使用该电器,我们通常的做法是使用一个变压器,将变压降低到该电器能够使用的电压,我们使用变压器将接口进行转化,将产生过大变压的接口转化为该电器可以使用的电压接口,这个变压器就是适配器。
适配器模式是什么
将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,别名为包装器。
核心思想
定义一个目标抽象类来定义客户所需接口,可以是一个抽象类或接口,然后定义一个适配器类,适配器可以调用另一个接口,作为一个转换器,对所需的接口进行适配,最后定义一个适配者类,即被适配的角色。
具体案例
我们有一个加密程序,现在有一个第三方库,需要进行加密,只不过还是使用原有的加密程序。要重用已有的加密算法,这些算法封装在第三方提供的类中,使用适配器模式设计加密模块。
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();
}
}
优点
实现接口的转化,实现对原有接口的转接。
灵活,扩展性好。
缺点