我想写一个加密可以为A系统加密又可以为B系统加密应该用什么设计模式好请给出java代码例子
建议使用策略模式来设计这个加密功能。在策略模式中,我们将不同的算法封装成不同的策略类,然后根据需要选择合适的策略类进行调用。
以下是使用策略模式实现加密功能的Java代码例子:
//加密策略接口 interface EncryptionStrategy { String encrypt(String data); }
//A系统加密策略 class AEncryptionStrategy implements EncryptionStrategy { @Override public String encrypt(String data) { //A系统加密算法的实现 return "AE" + data; } }
//B系统加密策略 class BEncryptionStrategy implements EncryptionStrategy { @Override public String encrypt(String data) { //B系统加密算法的实现 return "BE" + data; } }
//加密上下文类,用于选择合适的加密策略并调用其方法 class EncryptionContext { private EncryptionStrategy encryptionStrategy;
public EncryptionContext(EncryptionStrategy encryptionStrategy) {
this.encryptionStrategy = encryptionStrategy;
}
public void setEncryptionStrategy(EncryptionStrategy encryptionStrategy) {
this.encryptionStrategy = encryptionStrategy;
}
public String encrypt(String data) {
return encryptionStrategy.encrypt(data);
}
}
//测试代码 public class Test { public static void main(String[] args) { //创建加密上下文对象 EncryptionContext context = new EncryptionContext(new AEncryptionStrategy()); //使用A系统加密策略加密数据 String encryptedData1 = context.encrypt("data1"); System.out.println(encryptedData1);
//切换到B系统加密策略
context.setEncryptionStrategy(new BEncryptionStrategy());
//使用B系统加密策略加密数据
String encryptedData2 = context.encrypt("data2");
System.out.println(encryptedData2);
}
}
原文地址: https://www.cveoy.top/t/topic/b7xg 著作权归作者所有。请勿转载和采集!