您的当前位置:首页正文

结构型开发模式-适配器模式

来源:华拓网

结构型模式概述

    结构型模式分为 类结构模式 对象结构模式

  类结构模式只关心类的组合,有多个类可以组成一个更大的系统。在类结构模式中一般只存在 继承关系 和 实现关系。

对象结构模式只关心类与对象的组合,通过关联关系是得在一个类中定义另一个类的实例通对象,然后通过该实例变量调用其方法。根据“合成复用原则”, 在系统中尽量使用关联关系来代替继承关系,所以 对象结构模式 用的比较多。

适配器模式

模式动机:

   通常情况下,客户端可以通过目标类的借口访问它所提供的服务。有时候,现有类可以满足用户的需求,但是它所提供的借口不一定是用户所希望的,这可能是现有类的方法名和目标类的方法名不一致。所以这时候就可以使用适配器模式,把现有的接口转化成客户类所期望的借口,这就是适配器模式的模式动机。

模式结构:

Target:目标抽象类

Adapter: 适配器类

Adapted: 适配者类

Client: 客户类

适配器模式实例与解析

  某系统需要提供一个加密模块,将用户信息(如密码等机密信息)加密之后再存储在数据库中,系统已经定义好了数据库操作类。为了提高开发效率,现需要重用已有的加密算法,这些算法封装在一些由第三方提供的类中,有些甚至没有源代码。使用适配器模式设计该加密模块,实现在不修改现有类的基础上重用第三方加密方法。


目标抽象类

public abstract class DataOperation{

        public String password;

        public void setPassword(String password){

              this.password = password;

       }

        public String getPassword {

               return password;

       }

      public abstract String doEncrypt(int key,String ps);

}

数据加密类

public final class Casear{

public String doEncrypt(int key, String password){

        String es = "";

for(int i=0;i='a'&&c<='z')

{

             c+=key%26;

             if(c>'z') c-=26;

             if(c<'a') c+=26;

}

            if(c>='A'&&c<='Z')

{

                 c+=key%26;

                if(c>'Z') c-=26;

                if(c<'A') c+=26;

}

            es+=c; 

}

return es;

}

}

适配器类

public class CipherAdapter extends DataOperation

{

private Caesar cipher;

public CipherAdapter()

{

cipher=new Caesar();

}

public String doEncrypt(int key,String ps)

{

return cipher.doEncrypt(key,ps);

}

}

常见的模式应用

Sun公司在1996年公开了Java语言的数据库连接工具JDBC,JDBC使得Java语言程序能够与数据库连接,并使用SQL语言来查询和操作数据。JDBC给出一个客户端通用的抽象接口,每一个具体数据库引擎(如SQL Server、Oracle、MySQL等)的JDBC驱动软件都是一个介于JDBC接口和数据库引擎接口之间的适配器软件。抽象的JDBC接口和各个数据库引擎API之间都需要相应的适配器软件,这就是为各个不同数据库引擎准备的驱动程序。