软件开发生命周期及建模-实验报告单例模式-工厂模式(共13页).doc

上传人:飞****2 文档编号:16677318 上传时间:2022-05-18 格式:DOC 页数:13 大小:208.50KB
返回 下载 相关 举报
软件开发生命周期及建模-实验报告单例模式-工厂模式(共13页).doc_第1页
第1页 / 共13页
软件开发生命周期及建模-实验报告单例模式-工厂模式(共13页).doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《软件开发生命周期及建模-实验报告单例模式-工厂模式(共13页).doc》由会员分享,可在线阅读,更多相关《软件开发生命周期及建模-实验报告单例模式-工厂模式(共13页).doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上附:实验报告格式信息与管理科学学院计算机科学系实验报告课程名称: 软件开发生命周期与建模 实验名称: 【实验1】工厂方法模式(日志记录器) 专心-专注-专业姓 名: 杨现阳,张泽浩,张金庚,张俊超,杨波,王秋波 组号: 3 班级:14级计应四班 指导教师: 张 浩 实 验 室: 兰亭机房2 日 期: 2016年05月18日一、实验目的 工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。通过工厂方法模式中,

2、工厂父类负责定义创建产品对象的公共接口、工厂子类负责生成具体的产品对象,使得产品类的实例化操作延迟到工厂子类中完成。通过工厂方法模式实验,理解掌握工厂方法模式是如何超越简单工厂模式、如何符合“开闭原则”,使得系统具有更强的扩展性和可维护性。二、实验环境一台PC机,所需软件Win7/10、UML工具(Rose/Visio/EclipseUML/ StartUML/)、Eclipse/MyEclipse、JDK6.0等。三、实验内容 日志记录器系统:某系统日志记录器要求支持多种日志记录方式,如文件记录、数据库记录等,且用户可以根据要求动态选择日志记录方式,现使用工厂方法模式设计该系统。四、实验操作

3、过程 1分析得出日志记录器系统的具体工厂类和具体产品类工厂:日志记录器工厂public class DatabaseLogFactory extends LogFactory public Log createLog() return new DatabaseLog();public class FileLogFactory extends LogFactory public Log createLog() return new FileLog();产品:日志记录方式import javax.swing.JOptionPane;public class FileLog extends Log

4、public void writeLog() JOptionPane.showMessageDialog(null,文件记录方式!,14计应四班第三组 杨现阳,张金庚,张俊超,张泽浩,杨波,王秋波,1); import javax.swing.JOptionPane;public class DatabaseLog extends Log public void writeLog() JOptionPane.showMessageDialog(null,数据库记录方式!,14计应四班第三组 杨现阳,张金庚,张俊超,张泽浩,杨波,王秋波,1); 2分别对日志记录器系统的产品类和工厂类进行抽象抽象

5、工厂:LogFactorypublic abstract class LogFactory public abstract Log createLog();抽象产品:Logpublic abstract class Log public abstract void writeLog();3画出日志记录器系统的工厂类的结构图4画出日志记录器系统的产品类的结构图5对日志记录器系统的工厂类和产品类进行关联,画出日志记录器系统总体类图6总结抽象出一般的工厂方法模式类结构图,并进行角色说明AbstractFactory为抽象工厂,ConcreteFactory1为具体工厂1,ConcreteFactor

6、y2为具体工厂2。AbstractProduct为抽象产品,ConcreteProduct1为具体产品1,ConcreteProduct2为具体产品2。五、核心代码与实验结果 核心代码:import javax.swing.JOptionPane;public class Client public static void main(String args) Log log;LogFactory logf;String tvfname=JOptionPane.showInputDialog(子工厂类名);try Class c=Class.forName(tvfname);logf=(LogF

7、actory)c.newInstance();log=logf.createLog();log.writeLog(); catch (ClassNotFoundException e) e.printStackTrace(); catch (InstantiationException e) e.printStackTrace(); catch (IllegalAccessException e) e.printStackTrace(); 实验结果: 六、心得体会 问题基本解决,在软件设计中经常面临着“某个对象”的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比

8、较稳定的接口。如果我们 使用简单工厂,这样会不断地修改工厂类,应对业务变化,违反开闭原则,另外因为实例化产品的判断逻辑在工厂类中,工厂类会变的越来与臃肿。工厂方法模式又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂模式(Polymorphic Factory),定义一个用户创建对象的接口,让子类决定实例化哪一个类,工厂方法模式使一个类的实例化延迟到其子类。增加了系统的灵活性和扩展性。 七、组内打分组号姓名学号班级作业成绩(百分制)3杨现阳计应四班 90张泽浩计应四班90张金庚计应四班80张俊超计应四班80杨 波计应四班80王秋波计应四班80八、指导教师评

9、分注:纸质版实验报告编辑后打印,以组为单位交给学习委员,以班为单位交给老师成绩: (百分制)指导教师: 张 浩 信息与管理科学学院计算机科学系实验报告课程名称: 软件开发生命周期与建模 实验名称: 【实验2】单例模式(身份证号申请) 姓 名: 杨现阳,张泽浩,张金庚,张俊超,杨波,王秋波 组号: 3 班级: 14级计应四班 指导教师: 张 浩 实 验 室: 兰亭机房2 日 期: 2016年05月18日一、实验目的 单例模式(Singleton Pattern)确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式的要点有三个:一是某个

10、类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。通过单例模式实验,理解掌握单例模式是如何创建唯一实例、如何判断是唯一实例、如何通过公共接口对外提供单一实例。二、实验环境一台PC机,所需软件Win2003/XP、UML工具(Rose/Visio/EclipseUML/ StartUML/)、Eclipse/MyEclipse、JDK6.0等。三、实验内容 身份证号码系统:在现实生活中,居民身份证号码具有唯一性,同一个人不允许有多个身份证号码,第一次申请身份证时将给居民分配一个身份证号码,如果之后因为遗失等原因补办时,还是使用原来的身份证号码,不会产生新的号码。

11、现使用单例模式模拟该场景。四、实验操作过程 1分析身份证号码系统是如何保证在外部不能进行类的实例化身份证号码类拥有一个私有构造函数,确保用户无法通过new关键字直接实例化它。2分析身份证号码系统是如何在类内部自行创建该实例身份证号码类中包含一个静态私有被实例化的成员变量instance,以确保只有一个实例被创建。 3分析身份证号码系统是如何对外部(向整个系统)提供该实例身份证号码类中包含一个静态公有的工厂方法getInstance (),该工厂方法负责返回实例化的成员变量instance,以确保只有一个实例被创建。4画出身份证号码系统的总体类图代码:public class IdentityC

12、ardNo private static IdentityCardNo instance = new IdentityCardNo();public String no;private IdentityCardNo() public static IdentityCardNo getInstance ()return instance;public String getNo() return no;public void setNo(String no) this.no = no;5总结抽象出一般的单例模式类结构图,并进行角色说明懒汉式:饿汉式:instance静态私有被实例化的成员变量静态公

13、有的工厂方法getInstance ()6饿汉式单例模式和懒汉式单例模式的比较饿汉式单例类在自己被加载时就将自己实例化。单从资源利用效率角度来讲,这个比懒汉式单例类稍差些。从速度和反应时间角度来讲,则比懒汉式单例类稍好些。懒汉式单例类在实例化时,必须处理好在多个线程同时首次引用此类时的访问限制问题,特别是当单例类作为资源控制器,在实例化时必然涉及资源初始化,而资源初始化很有可能耗费大量时间,这意味着出现多线程同时首次引用此类的机率变得较大,需要通过同步化机制进行控制。五、核心代码与实验结果核心代码:import javax.swing.JOptionPane;public class Test

14、CardNo public static void main(String args) IdentityCardNo icn1,icn2;icn1=IdentityCardNo.getInstance(); icn1.setNo(); JOptionPane.showMessageDialog(null, icn1Number=+icn1.getNo(),14计应四班第三组 杨现阳,张金庚,张俊超,张泽浩,杨波,王秋波,1); icn2=IdentityCardNo.getInstance(); JOptionPane.showMessageDialog(null, icn2Number=+i

15、cn2.getNo(),14计应四班第三组 杨现阳,张金庚,张俊超,张泽浩,杨波,王秋波,1); JOptionPane.showMessageDialog(null, icn1=icn2,14计应四班第三组 杨现阳,张金庚,张俊超,张泽浩,杨波,王秋波,1);效果: 六、心得体会问题基本解决,单例模式可以保证整个系统中一个类只有一个实例,而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源,如果只希望在系统中某个类的对象有且只能存在一个,单例模式是最好的解决方案。对于某些系统来说,有些类只有一个实例很重要,如最常见的数据库连接配置对象。它在整个系统中只需要一个就足够了,多了就会产生很多不必要的开销,造成资源浪费。七、组内打分组号姓名学号班级作业成绩(百分制)3杨现阳计应四班 90张泽浩计应四班90张金庚计应四班80张俊超计应四班80杨 波计应四班80王秋波计应四班80八、指导教师评分注:纸质版实验报告编辑后打印,以组为单位交给学习委员,以班为单位交给老师成绩: (百分制)指导教师: 张 浩

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

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁