适配器模式(Adapter)

本文通过一个具体的加密模块设计案例,介绍了适配器模式的使用方法。在不修改现有类的基础上,通过适配器模式实现了对第三方加密算法的重用,提高了开发效率。文章详细展示了使用Java语言实现适配器模式的过程,并提供了代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、实验目的:

1) 掌握适配器模式(Adapter)的特点

2) 分析具体问题,使用适配器模式进行设计。

二、实验环境:

IDEA

 

三、实验内容:

加密适配器

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

现使用适配器模式来模拟实现打印池的设计。用JAVA语言实现(C#控制台应用程序实现)该模式。绘制该模式的UML图。

模式UML

【模式代码(JAVA语言实现)】

public abstract class DataOperation {

           public abstract String doEncrypt(String ps);

}

public class CipherAdapter extends DataOperation {

      private Caesar cipher;

      public CipherAdapter() {

            cipher=new Caesar();

      }

      public String doEncrypt(String ps) {

            return cipher.doEncrypt(ps);

      }

}

public class Caesar {

      public String doEncrypt(String ps) {  

            return "原来加密方法加密之后的"+ps;

      }

}

public class NewCipherAdapter extends DataOperation {

      private NewCipher cipher;

      public NewCipherAdapter() {

            cipher=new NewCipher();

      }

      public String doEncrypt(String ps) {

            return cipher.doEncrypt(ps);

      }

}

public class NewCipher {

      public String doEncrypt(String ps) {  

            return "新加密方法加密之后的"+ps;

      }

}

public class Client {

      public static void main(String[] args) {

            String s1 = "123456";

            String s2 = "";

            DataOperation data = null;

            data = new CipherAdapter();

            s2 = data.doEncrypt(s1);

            System.out.println(s2);

            data = new NewCipherAdapter();

            s2 = data.doEncrypt(s1);

            System.out.println(s2);

      }

}

【运行截图】

四、心得体会:

适配器模式主要适用于以下情况:

 

1)统需要使用一些现有的类,而这些类的接口(如方法名)不符合系统的需要,甚至没有这些类的源代码。

 

2)创建一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值