软件开发生命周期及建模-实验报告单例模式-工厂模式

上传人:s9****2 文档编号:503603291 上传时间:2023-10-17 格式:DOCX 页数:13 大小:161.01KB
返回 下载 相关 举报
软件开发生命周期及建模-实验报告单例模式-工厂模式_第1页
第1页 / 共13页
软件开发生命周期及建模-实验报告单例模式-工厂模式_第2页
第2页 / 共13页
软件开发生命周期及建模-实验报告单例模式-工厂模式_第3页
第3页 / 共13页
软件开发生命周期及建模-实验报告单例模式-工厂模式_第4页
第4页 / 共13页
软件开发生命周期及建模-实验报告单例模式-工厂模式_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《软件开发生命周期及建模-实验报告单例模式-工厂模式》由会员分享,可在线阅读,更多相关《软件开发生命周期及建模-实验报告单例模式-工厂模式(13页珍藏版)》请在金锄头文库上搜索。

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等。三、试验内容 日志记录器系统:某系统日志记录器要求支持多种日志记录方式,如文件记录、数据库记录等,且用户可以依据要求动态选择日志记录方式,现运用工厂方法模式设计该系统。四、试验操作过程 1分析得出日志记录器系统的详细工厂类

3、和详细产品类工厂:日志记录器工厂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 public void writeLog(

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

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

6、uct为抽象产品,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=(LogFactory)c.newInstance(

7、);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杨现阳1410208124计应四班 90张泽浩1410208127计应四班90张金庚1410208125计应四班80张俊超1410208126计应四班80杨 波141

9、0208123计应四班80王秋波1410208122计应四班80八、指导老师评分注:纸质版试验报告编辑后打印,以组为单位交给学习委员,以班为单位交给老师成果: (百分制)指导老师: 张 浩 信息与管理科学学院计算机科学系试验报告课程名称: 软件开发生命周期与建模 试验名称: 【试验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

12、画出身份证号码系统的总体类图代码:public class IdentityCardNo 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总结抽象出一般的单例模式类结构图,

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

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

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号