设计模式实验五_第1页
设计模式实验五_第2页
设计模式实验五_第3页
设计模式实验五_第4页
设计模式实验五_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验5结构型和行动型的设计模式实验实验时间: 2每组人数: 1实验类型:3 (1:基础性2 :综合性3 :设置修订性4 :研究性)实验要求:1 (1:必修2 :选修3 :其他)实验类别:3 (1:基础2 :专业基础3 :专业4 :其他)一、实验目的熟练使用PowerDesigner和任意面向对象的编程语言,实现一些常见的结构型和行为型设置修正模式,包括代理模式、责任链模式和指令模式,了解各设置修正模式的模式动机,把握模式结构,使用代码对此二、实验内容1 .应用程序需要记录业务方法的调用日志,为每个类提供日志记录代理类,而不修改现有的业务类,并将日志输出到代理类。 例如,在调用业务方法metho

2、d ()之前调用方法method (),调用时间为2014-11-在代理类中调用实际业务类的业务方法,并使用代理模式修改记录模块的结构2 .一家软件公司承担了一家信息咨询公司收费商务信息查询系统的开发任务,该系统的基本需求如下:(1)在进行商业信息查询之前,用户需要接受认证,只有合法的用户才能使用该查询系统(2)进行商务信息查询时,为了按照查询次数征收查询费用,需要记录查询日志。该软件公司的开发人员已经完成了商务信息查询模块的开发任务,希望现在可以用一种松耦合方式在原系统中添加认证和日志记录功能,客户端代码可以不区分原商务信息查询模块和添加新功能后的商务信息查询模块使用代理模型设定修正这个收费

3、商务信息查询系统,试着进行编程模拟。 【提示:保护代理和智能参考代理的使用】3 .某企业的供应链管理(SCM )系统包括采购审批子系统。 该企业的采购审查按等级进行,即根据采购金额的不同由不同级别的主管审查,主任审查5万元以下(5万元除外)的订单,副总经理审查5万元到10万元(10万元除外)的订单,董事长审查10万元到50万元(50万元除外)尝试使用滚动链模型设置和实现系统。4 .一家公司想要开发软件系统的在线文档帮助系统,用户可以在任何查询上下文中输入查询关键字,如果当前的查询环境中没有相关内容,系统将查询按照一定的顺序排列在其他的位置5 .房间里的开关是指令模式的一个例子,现在的指令模式模

4、拟开关的功能,可控制的对象包括电灯和电风扇,描绘对应的类图,对模拟实现。6 .一家软件公司打算开发基于Windows平台的布告栏系统。 系统提供了一个主菜单(Menu ),用于使用Menu类的addMenuItem ()方法添加菜单项。 菜单项的主要方法是click (),每个菜单项都包含抽象命令类。 具体的命令类包括OpenCommand、CreateCommand、EditCommand等。当前,请使用命令模式设置和修改此系统,以便MenuItem和BoardScreen类的绑定程度降低三、实验要求1 .结合实例准确绘制代理模式、职务链模式和指令模式的模式结构图2 .使用任何面向对象的编程

5、语言来实现代理模式、角色链模式、命令模式实例,并且代码正确运行。四、实验程序1 .使用PowerDesigner与实例一起绘制代理模式实例图,并以面向对象的编程语言实现2 .使用PowerDesigner与实例一起绘制代理模式实例图,并以面向对象的编程语言实现3 .使用PowerDesigner与实例一起创建角色链模式实例图,并以面向对象的编程语言实现4 .使用PowerDesigner与实例一起创建滚动链模式实例图,并以面向对象的编程语言实现模式实例5 .使用PowerDesigner与实例一起绘制命令模式实例映射,并以面向对象的编程语言实现6 .使用PowerDesigner与实例一起绘制

6、命令模式实例映射,并以面向对象的编程语言实现。五、实验结果1 .类图:实现代码:abstract日志. Java公共接口辅助日志0。公共语法();是日志代理人导入Java .文本.简单数据格式。导入Java.util.date;publicclasslogproxyimplementsabstractlogprivatelogrecordlogrecord=新日志记录();privatesimpledateformatsdf=newsimpledateformat ( yyy-mm-ddhh : mm : ss )。privatestring time=SDF.format (新日期() );

7、公共语音方法() )System.out.println (方法Method被调用,调用时间: time );特里。logRecord.method ();System.out.println (方法method ()调用成功 );catch (执行) 。System.out.println (方法method ()调用失败 );是是是日志记录. Javapublicclasslogrecordimplementsabstractlog公共语音方法() )System.out.println (真正的业务方法 );是是XMLUtil.java导入javax.XML.parsers.*;导入.

8、w3c.DOM.*;导入Java.io.*;公共类别xmlutil。/此方法从XML配置文件中提取特定的类名,并返回实例对象公共静态对象获取板()。特里。/创建DOM文档对象documentbuilderfactorydfactory=documentbuilderfactory.new实例();documentbuilderbuilder=dfactory.newdocumentbuilder ();文档文档;doc=builder.parse (新文件( src/config.XML ) ) :/获取包含类名的文本节点nodelist nl=doc.getelementsbytagname

9、 (类名称 );nodeclassnode=nl.item (0).get first child ();字符串名称=classnode.get nodevalue ();/从类名生成并返回实例对象class c=class.forname (名称);object obj=c .新实例();返回对象;是catch (扩展)。e .打印堆栈跟踪();返回空值;是是是客户端. Java公共类客户端。publicstaticvoidmain (字符串 args ) 。支持日志;al=(辅助日志) xmlutil.get bean ();al .方法();是是2 .类图:实现代码:AbstractSe

10、arch .java公共接口辅助搜索0。字符串搜索(字符串uid );是搜索代理. Javapublicclassearchproxyimplementsabstractsearch 。privaterealsearchrealsearch=newrealsearch ();私有验证器验证器;公共字符串搜索(字符串uid ) 。验证(uid )。字符串结果=realsearch.search (uid );日志(uid );返回结果;是埃尔斯返回空值;是隐私语音日志(字符串uid ) 。System.out.println (日志记录 );是私有演示(字符串uid ) 。验证器=新验证器();

11、返回验证器.验证(uid );是是RealSearch.javapublicclassrealsearchimplementsabstractsearch 。公共字符串搜索(字符串uid ) 。System.out.println(uid 正在进行具体的询问);return 具体咨询内容;是是验证器. Java公共等级验证器。公共演示(字符串uid ) 。if (uid=uid)。System.out.println (验证路径 );返回真实;是System.out.println (认证失败 );返回假;是是公共类客户端。publicstaticvoidmain (字符串 args ) 。AbstractSearch as;as=(abstractsearch ) xmlutil.get bean ();搜索( uid );是是3 .类图:实现代码:leader .日本航空公共助理级别指导符。受保护的领导者成功者;受保护的字符串名称;公共领袖() )

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论