设计模式-适配器模式的应用

适配器模式的应用

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

【模式UML图】

【模式代码】
// DataOperator.java:

package sdp.sy_6.adapterpattern;

public abstract class DataOperator {
   
	private String password;

	public String getPassword() {
   
		return password;
	}

	public void setPassword(String password) {
   
		this.password = password;
	}
	
	public abstract String doEncrypt(int key, String ps);
}

// CipherAdapter.java:

package sdp.sy_6.adapterpattern;

public class CipherAdapter extends DataOperator{
   
	private Caesar cipher;
	
	public CipherAdapter() {
   
		cipher = new Caesar();
	}
	
	public String doEncrypt(int key, String ps) {
   
		return cipher.doEncrypt(key, ps);
	}
}

// NewCipherAdapter.java:

package sdp.sy_6.adapterpattern;

public class NewCipherAdapter extends DataOperator{
   
	private NewCipher cipher;
	
	public NewCipherAdapter() {
   
		cipher = new NewCipher();
	}
	
	public String doEncrypt(int key, String ps) {
   
		return cipher.doEncrypt(key, ps);
	}
}

// Caesar.java:

package sdp.sy_6.adapterpattern;

public class Caesar {
   
	public String doEncrypt(int key, String ps) {
   
		return ps+key;
	}
}

// NewCipher.java:

package sdp.sy_6.adapterpattern;

public class NewCipher {
   
	public String doEncrypt(int key, String ps) {
   
		return ps+2*key;
	}
}

// EncryptModuleMain.java:

package sdp.sy_6.adapterpattern;

public class EncryptModuleMain {
   


	public static void main(String[] args) {
   
		
		DataOperator cipherAdapter = new CipherAdapter();
		cipherAdapter.setPassword("xushicheng");
		String pwd = cipherAdapter.getPassword();
		System.out.println("old doEncrypt:"+cipherAdapter.doEncrypt(6, pwd));
		
		DataOperator newCipherAdapter = new NewCipherAdapter();
		newCipherAdapter.setPassword("xushicheng");
		pwd = newCipherAdapter.getPassword();
		System.out.println("new doEncrypt:"+newCipherAdapter.doEncrypt(6, pwd));

	}

}

【运行截图】

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

  • 当系统想要使用现有的类,但是现有的类的接口不符合系统的需要时。
  • 当需要通过创建一个可复用的类,使用本来的接口不相容并且无关的类结合在一起工作时。
  • 在设计需要改变多个子类接口,在作用相同但名称不同的类或方法之间进行适配。
全部评论

相关推荐

10-11 17:45
门头沟学院 Java
走吗:别怕 我以前也是这么认为 虽然一面就挂 但是颇有收获!
点赞 评论 收藏
分享
10-24 13:36
门头沟学院 Java
Zzzzoooo:更新:今天下午有hr联系我去不去客户端,拒了
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务