设计模式 之 构建型模式<一>适配器模式(Adapter Pattern)
在对象适配器模式结构图中包含如下几个角色:
● Target(目标抽象类):目标抽象类定义客户所需接口,可以是一个抽象类或接口,也可以 是具体类。
● Adapter(适配器类):适配器可以调用另一个接口,作为一个转换器,对Adaptee和Target进 行适配,适配器类是适配器模式的核心,在对象适配器中,它通过继承Target并关联一个 Adaptee对象使二者产生联系。
● Adaptee(适配者类):适配者即被适配的角色,它定义了一个已经存在的接口,这个接口 需要适配,适配者类一般是一个具体类,包含了客户希望使用的业务方法,在某些情况下可 能没有适配者类的源代码。
案例:
Sunny软件公司OA系统需要提供一个加密模块,将用户机密信息(如口令、邮箱等)加 密之后再存储在数据库中,系统已经定义好了数据库操作类。
为了提高开发效率,现需 要重用已有的加密算法,这些算法封装在一些由第三方提供的类中,有些甚至没有源代 码。
试使用适配器模式设计该加密模块,实现在不修改现有类的基础上重用第三方加密 方法
目标抽象类
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//目标抽象类 public interface DataBase { //加密用户名和密码 public String EncryptionPwd(String pwd); public String EncryptionUser(String user); }
适配者
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//适配者 public class Encryption { //加密算法 public String EncryptionUser(String data){ return "返回加密后的数据"; } }
适配器
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//适配器类 public class Adapter implements DataBase { Encryption encryptio=null; public Adapter(){ encryptio=new Encryption(); } @Override public String EncryptionPwd(String pwd) { return encryptio.EncryptionUser(pwd); } @Override public String EncryptionUser(String user) { return encryptio.EncryptionUser(user); } }