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





《软件开发生命周期及建模-实验报告单例模式-工厂模式.doc》由会员分享,可在线阅读,更多相关《软件开发生命周期及建模-实验报告单例模式-工厂模式.doc(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 extends LogFactory public Log createLog() return new ();产品:日志记录方式import javax.swing.JOptionPane;public class extends Log public void writeLog() JOptionPane.showMessageDialog(null,文
4、件记录方式!,14计应四班第三组 杨现阳,张金庚,张俊超,张泽浩,杨波,王秋波,1); import javax.swing.JOptionPane;public class DatabaseLog extends Log public void writeLog() JOptionPane.showMessageDialog(null,数据库记录方式!,14计应四班第三组 杨现阳,张金庚,张俊超,张泽浩,杨波,王秋波,1); 2分别对日志记录器系统的产品类和工厂类进行抽象抽象工厂:LogFactorypublic abstract class LogFactory public abstra
5、ct Log createLog();抽象产品:Logpublic abstract class Log public abstract void writeLog();3画出日志记录器系统的工厂类的结构图4画出日志记录器系统的产品类的结构图5对日志记录器系统的工厂类和产品类进行关联,画出日志记录器系统总体类图6总结抽象出一般的工厂方法模式类结构图,并进行角色说明AbstractFactory为抽象工厂,ConcreteFactory1为具体工厂1,ConcreteFactory2为具体工厂2。AbstractProduct为抽象产品,ConcreteProduct1为具体产品1,Concre
6、teProduct2为具体产品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();log=logf.createLog();log.writeLog();
7、 catch (ClassNotFoundException e) e.printStackTrace(); catch (InstantiationException e) e.printStackTrace(); catch (IllegalAccessException e) e.printStackTrace(); 实验结果: 六、心得体会 问题基本解决,在软件设计中经常面临着“某个对象”的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口。如果我们 使用简单工厂,这样会不断地修改工厂类,应对业务变化,违反开闭原则,另外因为实例化产品的判断逻辑
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 开发 生命周期 建模 实验 报告 模式 工厂

限制150内