对象适配器模式

对象适配器模式

ID:47535023

大小:52.50 KB

页数:6页

时间:2020-01-13

对象适配器模式_第1页
对象适配器模式_第2页
对象适配器模式_第3页
对象适配器模式_第4页
对象适配器模式_第5页
对象适配器模式_第6页
资源描述:

《对象适配器模式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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

2、中,系统已经定义好了数据库操作类。为了提高开发效率,现需要重用已有的加密算法,这些算法封装在一些由第三方提供的类中,有些甚至没有源代码。使用适配器模式设计该加密模块,实现在不修改现有类的基础上重用第三方加密方法。2.应用场景类图通过分析,可使用对象适配器模式实现该系统设计,该实例类图如图1所示。DataOperation{abstract}-password:String+setPassword(Stringpassword):void+getPassword():String+doEncrypt(

3、intkey,Stringps):StringCipherAdapter-cipher:Caesar+CipherAdapter()+doEncrypt(intkey,Stringps):StringNewCipherAdapter-cipher:NewCipher+NewCipherAdapter()+doEncrypt(intkey,Stringps):StringCaesar+doEncrypt(intkey,Stringps):StringNewCipher+doEncrypt(intkey

4、,Stringps):Stringciphercipher图1加密适配器类图3.实现代码与解释(1)目标抽象类DataOperation(数据操作类)publicabstractclassDataOperation{privateStringpassword;publicvoidsetPassword(Stringpassword){this.password=password;}publicStringgetPassword(){returnthis.password;}publicabstrac

5、tStringdoEncrypt(intkey,Stringps);}DataOperation类中包含了抽象方法doEncrypt(),客户端针对抽象类DataOperation进行编程,在客户端代码中调用DataOperation的doEncrypt()实现数据加密。(2)适配者类Caesar(数据加密)publicclassCaesar{publicStringdoEncrypt(intkey,Stringps){Stringes="";for(inti=0;i

6、){charc=ps.charAt(i);if(c>='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<'Z')c+=26;}es+=c;}returnes;}}Caesar类是一个由第三方提供的数据加密类,该类定义为final类,无法继承。因此本实例不能通过类适配器来实现,只能使用对象适配器实现。客户端在使用时无须关心Caesar类的源代码,甚

7、至无法获得该类的源代码,只有编译后的class文件。(3)适配器类CipherAdapter(加密适配器类)publicclassCipherAdapterextendsDataOperation{privateCaesarcipher;publicCipherAdapter(){cipher=newCaesar();}publicStringdoEncrypt(intkey,Stringps){returncipher.doEncrypt(key,ps);}}CipherAdapter类充当适配器

8、角色,由于Caesar类无法继承,本实例采用对象适配器模型,在CipherAdapter类中定义一个Caesar类型的成员对象,在CipherAdapter类的构造函数实例化Caesar对象,CipherAdapter与Caesar类之间是组合关联关系。(4)XML操作工具类XMLUtilimportjavax.xml.parsers.*;importorg.w3c.dom.*;importorg.xml.sax.SAXException;importjava.io.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。