对象适配器模式(6页).doc

上传人:1595****071 文档编号:36315832 上传时间:2022-08-26 格式:DOC 页数:6 大小:216KB
返回 下载 相关 举报
对象适配器模式(6页).doc_第1页
第1页 / 共6页
对象适配器模式(6页).doc_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《对象适配器模式(6页).doc》由会员分享,可在线阅读,更多相关《对象适配器模式(6页).doc(6页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、-对象适配器模式-第 6 页实验项目名称: 对象适配器模式 (所属课程: 软件设计模式 )学 院:计算机科学与信息工程学院 专业班级:软件工程13-1 姓 名:王会芳 学 号: 实验日期:2016年4月3 实验地点:A06 404 合作者: 指导教师:高原 本实验项目成绩: 教师签字: 日期: 一、 实验目的与要求1.练习使用对象适配器模式。设计相关的模拟场景并进行实施,验证模式特性,掌握其优缺点。2.实验结束后,对相关内容进行总结。二、实验内容某系统需要提供一个加密模块,将用户信息(如密码等机密信息)机密之后再存储在数据库中,系统已经定义好了数据库操作类。为了提高开发效率,现需要重用已有的加

2、密算法,这些算法封装在一些由第三方提供的类中,有些甚至没有源代码。使用适配器模式设计该加密模块,实现在不修改现有类的基础上重用第三方加密方法。通过分析,可使用对象适配器模式实现该系统设计,该实例类图如图1所示。DataOperationabstract- password : String+ setPassword(String password) : void+ getPassword() : String+ doEncrypt(int key, String ps) : StringCipherAdapter- cipher : Caesar+ CipherAdapter()+ doEnc

3、rypt(int key, String ps) : StringNewCipherAdapter- cipher : NewCipher+ NewCipherAdapter()+ doEncrypt(int key, String ps) : StringCaesar+ doEncrypt(int key, String ps) : StringNewCipher+ doEncrypt(int key, String ps) : Stringciphercipher图1 加密适配器类图(1)目标抽象类DataOperation(数据操作类)public abstract class Data

4、Operation private String password;public void setPassword(String password)this.password=password;public String getPassword()return this.password;public abstract String doEncrypt(int key, String ps);DataOperation类中包含了抽象方法doEncrypt(),客户端针对抽象类DataOperation进行编程,在客户端代码中调用DataOperation的doEncrypt()实现数据加密。(

5、2)适配者类Caesar(数据加密)public class Caesar public String doEncrypt(int key, String ps)String es=;for(int i=0;i=a&cz) c-=26;if(c=A&cZ) c-=26;if(cZ) c+=26;es+=c;return es;Caesar类是一个由第三方提供的数据加密类,该类定义为final类,无法继承。因此本实例不能通过类适配器来实现,只能使用对象适配器实现。客户端在使用时无须关心Caesar类的源代码,甚至无法获得该类的源代码,只有编译后的class文件。(3)适配器类CipherAdap

6、ter(加密适配器类)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);CipherAdapter类充当适配器角色,由于Caesar类无法继承,本实例采用对象适配器模型,在CipherAdapter类中定义一个Caesar类型的成员对象,在CipherAdapter类的构

7、造函数实例化Caesar对象,CipherAdapter与Caesar类之间是组合关联关系。(4)XML操作工具类XMLUtilimport javax.xml.parsers.*;import org.w3c.dom.*;import org.xml.sax.SAXException;import java.io.*;public class XMLUtil/该方法用于从XML配置文件中提取具体类类名,并返回一个实例对象public static Object getBean()try/创建文档对象DocumentBuilderFactory dFactory = DocumentBuild

8、erFactory.newInstance();DocumentBuilder builder = dFactory.newDocumentBuilder();Document doc;doc = builder.parse(new File(config.xml); /获取包含类名的文本节点NodeList nl = doc.getElementsByTagName(className); Node classNode=nl.item(0).getFirstChild(); String cName=classNode.getNodeValue(); /通过类名生成实例对象并将其返回 Cla

9、ss c=Class.forName(cName); Object obj=c.newInstance(); return obj; catch(Exception e) e.printStackTrace(); return null;(5) CipherAdapter(6)客户端测试类Clientpublic class Clientpublic static void main(String args)DataOperation dao=(DataOperation)XMLUtil.getBean();dao.setPassword(wangHuiFang);String ps=dao.

10、getPassword();String es=dao.doEncrypt(6,ps);System.out.println(明文为: + ps);System.out.println(密文为: + es);在客户端测试类Client中,我们需要多“wangHuiFang“进行加密,在实现时调用目标抽象类DataOperation的doEncrypt()方法,而将具体类的类名保存在config.xml配置文件中,程序运行时,将读取存取在配置文件中的类名,再通过Java反射机制生成对象,该对象在运行时将动态替换父类的doEncrypt()方法,实现真正加密。在配置文件中将节点中的内容设置为:Ci

11、pherAdapter,则输出结果如下:如果需要更换一种更为安全的加密算法,如使用求模运算来进行加密,代码如下所示:public final class NewCipherpublic String doEncrypt(int key,String ps)String es=;for(int i=0;ips.length();i+)String c=String.valueOf(ps.charAt(i)%key);es+=c;return es;在系统中使用如上所述的新加密算法,可以对应增加一个新的适配器类,代码如下:public class NewCipherAdapter extends DataOperationprivate NewCipher cipher;public NewCipherAdapter()cipher=new NewCipher();public String doEncrypt(int key,String ps)return cipher.doEncrypt(key,ps);在配置文件中将节点中的内容设置为:NewCipherAdapter,则输出结果如下:三、实验总结1. 通过本次实验对对象适配器模式有了深刻的认识。2. 通过本次实验知道了对象配器模式的结构和实现方式。3. 通过本次实验理解了类适配器和对象适配器的差异。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 单元课程

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com