P2-实验二-设计模式实验一
- 格式:doc
- 大小:237.00 KB
- 文档页数:5
实验设计模板实验设计是科学研究中非常重要的一环,它直接关系到实验结果的准确性和科学性,也是科学研究的基础。
一个好的实验设计能够有效地提高实验的可靠性和可重复性,从而为科学研究提供可靠的数据支持。
在进行实验设计时,需要考虑实验的目的、方法、数据处理和分析等方面,下面将介绍一些实验设计的基本模板。
一、实验目的。
实验目的是设计实验的出发点和基础,它直接关系到实验的科学性和实用性。
在确定实验目的时,需要明确实验所要解决的问题,以及实验的预期结果。
实验目的应该明确、具体、可操作,能够为实验的顺利进行提供指导。
二、实验设计。
1. 实验对象的选择。
实验对象的选择是实验设计的第一步,它直接关系到实验结果的准确性和科学性。
在选择实验对象时,需要考虑实验的目的和要解决的问题,选择能够代表整体的样本进行实验。
2. 实验方法的确定。
实验方法的确定是实验设计的核心,它直接关系到实验的可靠性和可重复性。
在确定实验方法时,需要考虑实验的目的、实验对象的特点和实验条件等因素,选择合适的实验方法进行实验。
3. 实验方案的制定。
实验方案的制定是实验设计的重要环节,它直接关系到实验的实施和数据的获取。
在制定实验方案时,需要考虑实验的目的、实验方法和实验条件等因素,设计合理的实验方案进行实验。
三、数据处理与分析。
1. 数据的采集。
数据的采集是实验设计的重要环节,它直接关系到实验结果的准确性和科学性。
在进行数据采集时,需要采用合适的方法和工具,确保数据的准确性和完整性。
2. 数据的处理。
数据的处理是实验设计的关键环节,它直接关系到实验结果的可靠性和科学性。
在进行数据处理时,需要采用合适的方法和工具,对数据进行整理、计算和分析,确保数据的科学性和可靠性。
3. 数据的分析。
数据的分析是实验设计的最终环节,它直接关系到实验结果的解释和应用。
在进行数据分析时,需要采用合适的方法和工具,对数据进行统计和推断,得出科学的结论和结论。
四、实验结果的应用。
实验设计方案模板一、背景与目的。
实验设计是科研工作中非常重要的一环,好的实验设计方案能够有效地指导实验的开展,并确保实验结果的可靠性和准确性。
本实验旨在探究某种特定条件下的影响因素及其作用机理,为相关领域的研究提供可靠的数据支持。
二、实验目的。
1. 确定影响因素对实验结果的影响程度;2. 探究影响因素对实验结果的作用机理;3. 提出针对性的实验结论和建议。
三、实验设计方案。
1. 实验对象,选择具有代表性的实验对象,确保实验结果的可靠性和普适性。
2. 实验条件,明确实验所需的环境条件和操作条件,包括温度、湿度、光照等因素。
3. 实验步骤,详细描述实验的操作步骤,确保实验的可重复性和可比性。
4. 实验组设置,根据实验目的,设置对照组和实验组,确保实验结果的可信度和可比性。
5. 数据采集,明确数据采集的时间点、方法和频率,确保数据的完整性和准确性。
6. 数据处理,描述数据处理的方法和步骤,包括数据的清洗、分析和统计方法,确保数据的科学性和可信度。
7. 结果分析,对实验结果进行科学的分析和解释,提炼出实验结论和建议。
四、实验设计方案的优化。
1. 对比分析,根据实验结果,对比不同条件下的实验数据,找出影响因素的差异性和规律性。
2. 参数调整,根据实验结果,对实验条件和操作步骤进行调整,优化实验设计方案,提高实验效率和准确性。
3. 方案改进,根据实验过程中的问题和不足,改进实验设计方案,提高实验的可靠性和科学性。
五、实验设计方案的应用。
1. 实验指导,根据优化后的实验设计方案,指导实验的开展,确保实验的顺利进行。
2. 结果解读,根据实验结果,对实验数据进行解读和分析,得出实验结论和建议。
3. 成果应用,将实验结果应用于相关领域的研究和实践,推动科学技术的进步和应用。
六、总结与展望。
本实验设计方案基于科学的原理和方法,经过优化和应用,能够有效地指导实验的开展,确保实验结果的可靠性和准确性。
未来,我们将进一步完善实验设计方案,提高实验效率和科学性,为相关领域的研究和实践提供更多的可靠数据支持。
软件工程实验指导书 2021一、实验目的软件工程是一门将理论与实践紧密结合的学科。
通过本实验课程,旨在帮助学生深入理解和掌握软件工程的基本原理、方法和技术,培养学生的软件开发能力、团队协作能力和问题解决能力,为今后从事软件开发及相关工作打下坚实的基础。
二、实验环境1、操作系统:Windows 10 或 Linux(如 Ubuntu)。
2、开发工具:Eclipse、IntelliJ IDEA 等集成开发环境(IDE)。
3、数据库管理系统:MySQL、Oracle 等。
4、版本控制系统:Git。
三、实验要求1、学生应在实验前认真预习实验内容,熟悉相关的理论知识和技术。
2、实验过程中,学生应严格遵守实验室的规章制度,爱护实验设备。
3、学生应独立完成实验任务,不得抄袭他人的实验成果。
4、实验结束后,学生应及时整理实验数据和结果,撰写实验报告。
四、实验内容实验一:软件需求分析1、实验目的掌握软件需求分析的方法和过程。
学会使用需求分析工具,如 UML 用例图、活动图等。
2、实验内容确定软件项目的目标和范围。
对用户的需求进行调研和分析,收集相关的信息和资料。
绘制用例图和活动图,描述系统的功能和业务流程。
编写需求规格说明书。
3、实验步骤第一步:明确软件项目的背景和目标,与相关人员进行沟通和交流,了解项目的需求和期望。
第二步:通过问卷调查、用户访谈等方式收集用户的需求,对需求进行整理和分类。
第三步:使用 UML 工具绘制用例图和活动图,对系统的功能和业务流程进行建模。
第四步:根据需求分析的结果,编写需求规格说明书,详细描述系统的功能、性能、数据、安全等方面的需求。
实验二:软件设计1、实验目的掌握软件设计的原则和方法。
学会使用设计模式,提高软件的可维护性和可扩展性。
2、实验内容进行软件体系结构设计,选择合适的架构模式。
设计软件的模块结构和接口。
运用设计模式对软件进行优化。
3、实验步骤第一步:根据需求规格说明书,确定软件的体系结构,如分层架构、微服务架构等。
实验二:工厂模式实验内容简单工厂方法模式:利用简单工厂方法模式创建pad, phone, watch的对象,并使用这些对象娱乐。
工厂模式:利用工厂模式创建pad, phone, watch的对象,并使用这些对象娱乐。
抽象工厂模式:利用抽象工厂模式创建华为、小米、苹果的pad, phone, watch的对象,并使用这些对象娱乐。
简单工厂方法模式设计图1简单工厂模式类图核心代码ConsumerElectronics.java核心代码Pad.java核心代码Watch.java核心代码Phone.java核心代码ConsumerElectronicsFactory.java核心代码实现效果图 2 简单工厂模式实现效果图工厂模式设计图 3 工厂模式类图核心代码ConsumerElectronicsFactory.java核心代码PadFactory.java核心代码WatchFactory.java核心代码PhoneFactory.java核心代码实现效果图4 工厂模式实现效果图抽象工厂模式设计图5抽象工厂模式类图核心代码AbstractFactory.java核心代码AppleFactory.java核心代码HuaweiFactory.java核心代码MiFactory.java核心代码实现效果图 6 抽象工厂模式实现效果图实验体会做完这次试验,下面是我的一些体会:首先,工厂模式是为了解耦:把对象的创建和使用的过程分开。
其次,工厂模式可以降低代码重复。
如果创建对象的过程都很复杂,需要一定的代码量,而且很多地方都要用到,那么就会有很多的重复代码。
我们可以这些创建对象的代码放到工厂里统一管理。
既减少了重复代码,也方便以后对该对象的创建过程的修改维护。
由于创建过程都由工厂统一管理,所以发生业务逻辑变化,不需要逐个修正,只需要在工厂里修改即可,降低维护成本。
另外,因为工厂管理了对象的创建逻辑,使用者并不需要知道具体的创建过程,只管使用即可,减少了使用者因为创建逻辑导致的错误。
V 1.0 面向对象的UML设计基础实验指导书(试用稿)编写:陈浩校核:_______湖南大学软件学院2004年9月目录《面向对象的UML设计基础》实验教学大纲 (1)实验一熟悉Rational Rose建模环境 (3)实验二Use Case 分析与设计 (10)实验三顺序图建模 (16)实验四类分析与包 (22)实验五设计类图与分析 (26)实验六构件图和部署图建模 (30)实验七状态图与活动图 (33)实验八UML与设计模式 (37)实验九数据建模 (40)实验十图书管理系统设计 (49)实验十一会议文件审批系统设计 (50)实验十二简易教务管理系统设计 (51)《面向对象的UML设计基础》实验教学大纲课程名称:面向对象的UML设计基础课程编号:本大纲主笔人:陈浩课程所占的学时、学分及实验课所占学时、学分总学时:32+32 总学分:3实验课时:32 实验学分:1二、实验适用专业:软件工程本科三、实验配套教材《UML与Rational Rose从入门到精通》Boggs,W.著,邱仲潘等译,电子工业出版社,2003出版四、实验的任务、性质和目的1.通过实验加深对面向对象技术的认知和理解;2. 熟悉Rational Rose等建模工具,较系统地掌握UML建模方法;3.培养学生综合运用软件工程理论进行系统分析和设计的能力。
五、实验的基本理论自20世纪90年代以来,面向对象技术以其显著的优势成为计算机软件领域的主流技术。
越来越多的软件企业认识到,要在激烈的市场竞争中立于不败之地,采用面向对象技术是势在必行的选择。
软件行业需要大量掌握面向对象方法与技术的人才,这些人才不仅仅是能够使用一种或几种面向对象编程语言来编程,更重要的是能运用面向对象方法进行系统建模,即通过面向对象的分析(OOA)和面向对象的设计(OOD)建立系统的分析模型和设计模型。
《面向对象的UML设计基础》课程是一门综合性、实用性很强的课程。
设计模式实验报告(一)课程名称: ___设计模式__ _实验名称:__创建型与结构型模式专业: 计算机科学与技术学号:姓名:实验日期:2012.4.09工厂模式一、实验目的:1、学习工厂模式设计2、学习抽象工厂模式设计3、学习建造者模式设计4、学习单例模式二、运行环境:Microsoft Visual Studio 2010三、实验内容1、工厂模式模式定义:在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。
实例说明:为了让增加新品牌电视机更加方便,可以通过工厂方法模式对该电视机厂进行进一步重构。
可以将原有的工厂进行分割,为每种品牌的电视机提供一个子工厂,海尔工厂专门负责生产海尔电视机,海信工厂专门负责生产海型电视机,如果需要生产TCL电视机,只需要对应增加一个新的TCL工厂即可,原有的工厂无需做任何修改,使得整个系统具有更好的灵活性和可扩展性。
①源代码:Class1:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows.Forms;namespace工厂模式?{public interface TV{void play();}public class HaierTV : TV{public void play(){MessageBox.Show("海£尔?电?视酣?播¥放?中D");}}public class HisenseTV : TV{public void play(){MessageBox.Show("海£信?电?视酣?播¥放?中D");}}public interface TVFactory{TV produceTV();}public class HaierTVFactory : TVFactory{public TV produceTV(){MessageBox.Show("海£尔?电?视酣?工¤厂§生Θ?产ú海£信?电?视酣?机ú");return new HaierTV();}}public class HisenseTVFactory : TVFactory{public TV produceTV(){MessageBox.Show("海£信?电?视酣?工¤厂§生Θ?产ú海£信?电?视酣?机ú");return new HisenseTV();}}class Class1{}}Form1.csusing System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace工¤厂§模£式?{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e) {TV tv;TVFactory factory;factory = new HaierTVFactory (); //唯¨一?不?一?样ù的?地?方?tv=factory.produceTV ();tv .play ();}private void button2_Click(object sender, EventArgs e) {TV tv;TVFactory factory;factory = new HisenseTVFactory(); //唯¨一?不?一?样ù的?地?方?tv = factory.produceTV();tv.play();}}}②运行结果:主界面:点击“海尔电视”按钮后:再点击“确定”后:点击“海信电视”按钮后:点击“确定”按钮后:2、抽象工厂模式模式定义:提供一个创建一系列相关或相互依赖对象的接口,且无需指定他们具体的类。
软件工程导论实验报告软件工程导论实验报告导论软件工程是一门涉及软件开发、测试和维护的学科,它的目标是提高软件开发的效率和质量。
为了更好地理解软件工程的概念和实践,我们进行了一系列的实验。
本报告将介绍我们在软件工程导论实验中所学到的知识和经验。
实验一:需求分析在软件开发过程中,需求分析是至关重要的一步。
我们的第一个实验是对一个虚拟的在线购物系统进行需求分析。
通过与团队成员的合作,我们学习了如何收集用户需求、分析需求的重要性和优先级,并将其转化为软件功能和特性。
实验二:软件设计软件设计是软件工程的核心环节之一。
在第二个实验中,我们学习了不同的软件设计模式和架构,如MVC(Model-View-Controller)和微服务架构。
通过实际操作,我们掌握了如何将需求转化为软件设计图,并理解了设计决策对软件开发的影响。
实验三:编码与测试编码和测试是软件开发的具体实施阶段。
在第三个实验中,我们使用了常见的编程语言和开发工具,如Java和Eclipse,来实现我们的软件设计。
同时,我们还学习了测试的重要性,并使用JUnit等测试框架进行单元测试和集成测试。
实验四:软件项目管理软件项目管理是确保软件开发项目按时、按质量完成的关键。
在第四个实验中,我们学习了项目管理的基本原理和方法,如项目计划、进度跟踪和风险管理。
通过实践,我们意识到合理的项目管理可以极大地提高团队的工作效率和项目的成功率。
实验五:软件质量保证软件质量保证是确保软件产品符合用户需求和质量标准的重要环节。
在最后一个实验中,我们学习了软件测试的不同方法和技术,如黑盒测试和白盒测试。
我们还了解了软件质量标准和认证,如ISO 9001和CMMI。
总结通过这一系列的实验,我们深入了解了软件工程的各个方面。
我们学会了如何分析用户需求、设计软件系统、实施编码和测试,并掌握了软件项目管理和质量保证的方法。
这些实验不仅提高了我们的理论知识,也培养了我们的团队合作和问题解决能力。
《C#设计模式》教学大纲一、课程说明1、课程编号:2、课程名称(中/英文):C#设计模式/C# Design Patterns3、课程类别:专业课4、学时/学分:32/2.05、先修课程:C#面向对象程序设计、软件工程6、适用专业:软件工程,计算机科学与技术,信息管理与信息系统7、教材、教学参考书:[1] 刘伟, 胡志刚. C#设计模式(第2版). 北京: 清华大学出版社, 2018.[2] Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software.Addison-Wesley, 1995.[3] James W. Cooper. C#设计模式. 北京: 科学出版社, 2011.二、课程性质和教学目的《C#设计模式》是软件工程、计算机科学与技术、信息管理与信息系统等专业本科生的一门专业课,本课程是一门具有较强理论性和实践性的软件设计和开发类课程。
本课程主要学习设计模式基础知识、UML类图、面向对象设计原则、常用的创建型设计模式、结构型设计模式和行为型设计模式。
本课程要求学生掌握常用设计模式的动机、定义、结构、实现、使用效果以及应用实例,能够将所学知识应用到C#项目设计与开发中,进一步培养学生的工程实践能力和专业技术水平,为今后从事相关工作奠定基础。
本课程首先学习设计模式的基本知识和UML类图;接着介绍常见的七个面向对象设计原则;然后重点介绍使用频率较高的设计模式,包括五种创建型设计模式(简单工厂模式、工厂方法模式、抽象工厂模式、原型模式、单例模式)、六种结构型设计模式(适配器模式、桥接模式、组合模式、装饰模式、外观模式、代理模式)和七种行为型设计模式(职责链模式、命令模式、迭代器模式、观察者模式、状态模式、策略模式、模板方法模式)。
设计模式实验报告《设计模式》实验指导书10学时教师:张凯实验一工厂模式的应用【实验目的】1) 掌握工厂模式(Factory)的特点 2) 分析具体问题,使用工厂模式进行设计。
【实验内容和要求】有一个OEM制造商代理做HP笔记本电脑(Laptop),后来该制造商得到了更多的品牌笔记本电脑的订单Acer,Lenovo,Dell,该OEM商发现,如果一次同时做很多个牌子的本本,有些不利于管理。
利用工厂模式改善设计,用C#控制台应用程序实现该OEM制造商的工厂模式。
绘制该模式的UML图。
【模式UML图】【模式代码(JAVA语言实现)】public class FactoryMethod {public static void main(String[] args) { Computer c;Factory f=new DellFactory(); c=f.getComputerType(); puterType();f=new LenovoFactory();c=f.getComputerType(); puterType(); f=new AcerFactory();c=f.getComputerType(); puterType(); } }interface Factory{Computer getComputerType(); }class DellFactory implements Factory{ @Overridepublic Computer getComputerType() { return new Dell(); } }class AcerFactory implements Factory{ @Overridepublic Computer getComputerType() { return new Acer(); } }class LenovoFactory implements Factory{ @Overridepublic Computer getComputerType() { return new Lenovo(); } } /** * 电脑品牌 */interface Computer{public void ComputerType(); }class Dell implements Computer{ @Overridepublic void ComputerType() {// TODO Auto-generated method stub System.out.println(\); } } class Acer implements Computer{ @Overridepublic void ComputerType() {System.out.println(\); } }class Lenovo implements Computer{ @Overridepublic void ComputerType() {// TODO Auto-generated method stubSystem.out.println(\); } }【运行截图】【实验小结】通过本次实验,学会了使用工厂方法模式。
设计模式实验一实验报告书专业班级软件 0703 学号 3901070324 姓名吉亚云指导老师刘伟时间 2010年3月 27日中南大学软件学院实验一设计模式上机实验一一、实验目的熟练使用PowerDesigner绘制类图,构造系统的静态结构模型;使用PowerDesigner和任意一种面向对象编程语言实现几种常见的设计模式,包括简单工厂模式、工厂方法模式、抽象工厂模式、原型模式、单例模式、适配器模式、桥接模式和组合模式。
二、实验要求1. 使用PowerDesigner绘制标准的UML类图;2. 正确无误绘制简单工厂模式、工厂方法模式、抽象工厂模式、原型模式、单例模式、适配器模式、桥接模式和组合模式的模式结构图;3. 使用任意一种面向对象编程语言实现简单工厂模式、工厂方法模式、抽象工厂模式、原型模式、单例模式、适配器模式、桥接模式和组合模式,代码运行正确无误。
三、实验步骤1. 熟悉PowerDesigner11的常用功能;2. 使用PowerDesigner绘制类图;3. 使用PowerDesigner绘制简单工厂模式结构图并用面向对象编程语言实现该模式;4. 使用PowerDesigner绘制工厂方法模式结构图并用面向对象编程语言实现该模式;5. 使用PowerDesigner绘制抽象工厂模式结构图并用面向对象编程语言实现该模式;6. 使用PowerDesigner绘制原型模式结构图并用面向对象编程语言实现该模式;7. 使用PowerDesigner绘制单例模式结构图并用面向对象编程语言实现该模式;8. 使用PowerDesigner绘制适配器模式结构图并用面向对象编程语言实现该模式;9. 使用PowerDesigner绘制桥接模式结构图并用面向对象编程语言实现该模式;10. 使用PowerDesigner绘制组合模式结构图并用面向对象编程语言实现该模式。
四、实验报告要求1. 绘制实例场景的类图;2. 提供简单工厂模式结构图及实现代码;3. 提供工厂方法模式结构图及实现代码;4. 提供抽象工厂模式结构图及实现代码;5. 提供原型模式结构图及实现代码;6. 提供单例模式结构图及实现代码;7. 提供适配器模式结构图及实现代码;8. 提供桥接模式结构图及实现代码;9. 提供组合模式结构图及实现代码。
《软件体系结构》实验报告项目名称设计模式实验2专业班级实验成绩:批阅教师:实验3设计模式实验实验学时: 4每组人数: 1实验类型: 3 (1:基础性 2:综合性 3:设计性4 :研究性)实验要求: 1 (1:必修 2:选修 3:其它)实验类别:3(1:基础2 :专业基础3:专业4:其它)、实验目的熟练使用PowerDesigner 和任意一种面向对象编程语言实现几种常见的行为型设计模 式,包括职责链模式、命令模式、观察者模式和策略模式,理解每一种设计模式的模式动 机,掌握模式结构,学习如何使用代码实现这些模式。
、实验内容1.某企业的SCM(Suppiy Chain Management ,供应链管理)系统中包含一个采购审批子系统。
该企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来 审批,主任可以审批 5万元以下(不包括 5万元)的采购单,副董事长可以审批5万元至10万元(不包括10万元)的采购单,董事长可以审批10万元至50万元(不包括50万元)的采购单,50万元及以上的采购单就需要开董事会讨论决定。
如下图所示:试使用职责链模式设计并模拟实现该系统。
2.房间中的开关是命令模式的一个实例,现用命令模式来模拟开关的功能,可控制对 象包括电灯和电风扇,绘制相应的类图并编程模拟实现。
3.某软件公司欲开发一个基于 Windows 平台的公告板系统。
系统提供一个主菜单(Menu),在主菜单中包含了一些菜单项(Menultem),可以通过 Menu 类的addMenultem()方 法增加菜单项。
菜单项的主要方法是click(),每一个菜单项包含一个抽象命令类,具体命令类包括 Open Comma nd(打开命令),CreateComma nd(新建命令),EditComma nd(编辑命令) 等,命令类具有一个 execute()方法,用于调用公告板系统界面类(BoardScreen)的open()、 create 。
实验一经典软件体系结构风格(一) (1)实验目的 (1)实验内容 (1)1.管道-过滤器软件体系结构 (1)2.数据抽象和面向对象软件体系结构 (2)思考与提高 (4)实验二经典软件体系结构风格(二) (5)实验目的 (5)实现内容 (5)1.基于事件的隐式调用风格 (5)2.层次软件体系结构 (6)实验三分布式软件体系结构风格 (13)实验目的 (13)实验内容 (13)C/S体系结构风格 (13)思考与提高 (14)实验四MVC风格 (15)实验目的 (15)实验内容 (15)MVC的应用和编程实现 (15)实验五软件设计的目标 (23)实验目的 (23)实验内容 (23)1.用Java语言实现一个计算器程序 (23)2.健壮性 (23)3.可维护性——基于面向对象技术的计算器程序 (24)4.基于简单工厂模式的计算器程序 (25)5.基于工厂方法模式的计算器程序 (27)实验六软件设计——面向对象方法 (29)实验目的 (29)实验内容 (29)1.问题域部分的设计——对多重继承的调整 (29)2.数据管理部分的设计 (30)实验七设计原则 (35)实验目的 (35)实验内容 (35)1.里氏代换原则 (35)2.合成/聚合复用原则 (35)3.依赖倒转原则 (36)4.迪米特法则 (37)5.接口隔离原则 (37)实验八设计模式 (38)实验目的 (38)实验内容 (38)1.单例模式 (38)2.观察者模式 (38)实验一经典软件体系结构风格(一)实验目的(1)理解管道-过滤器软件体系结构、面向对象软件体系结构的原理(2)掌握管道-过滤器软件体系结构、面向对象软件体系结构的实例(3)管道-过滤器软件体系结构、面向对象软件体系结构的编程实现实验内容1.管道-过滤器软件体系结构(1)在dos提示符下输入下面的命令:dir | more使得当前目录列表在屏幕上逐屏显示。
dir的输出的是整个目录列表,它不出现在屏幕上而是由于符号“|”的规定,成为下一个命令more的输入,more命令则将其输入一屏一屏地显示,成为命令行的输出。
实验二设计模式实验一
一、实验目的
熟练使用PowerDesigner和任意一种面向对象编程语言实现几种常见的设计模式,包括简单工厂模式、工厂方法模式、抽象工厂模式、单例模式和适配器模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式,并学会分析这些模式的使用效果。
二、实验内容
使用PowerDesigner和任意一种面向对象编程语言实现简单工厂模式、工厂方法模式、抽象工厂模式、单例模式和适配器模式,包括根据实例绘制模式结构图、编写模式实例实现代码,运行并测试模式实例代码。
(1) 简单工厂模式
使用简单工厂模式设计一个可以创建不同几何形状(Shape)的绘图工具类,如可创建圆形(Circle)、方形(Rectangle)和三角形(Triangle) 对象,每个几何图形都要有绘制draw()和擦除erase()两个方法,要求在绘制不支持的几何图形时,提示一个UnsupportedShapeException,绘制类图并编程实现。
(2) 简单工厂模式
使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数“M”,则返回一个Man 对象,如果传入参数“W”,则返回一个Woman对象,使用任意一种面向对象编程语言实现该场景。
现需要增加一个新的Robot类,如果传入参数“R”,则返回一个Robot对象,对代码进行修改并注意女娲的变化。
(3) 工厂方法模式
某系统日志记录器要求支持多种日志记录方式,如文件记录、数据库记录等,且用户可以根据要求动态选择日志记录方式,现使用工厂方法模式设计该系统。
用代码实现日志记录器实例,如果在系统中增加一个中的日志记录方式——控制台日志记录(ConsoleLog),绘制类图并修改代码,注意增加新日志记录方式过程中原有代码的变化。
<<create>>
FileLogFactory +createLog ()...
: Log LogFactory +createLog ()...
: Log FileLog +writeLog ()...
: void Log
+writeLog ()...
: void DatabaseLogFactory +createLog ()...
: Log DatabaseLog +writeLog ()...
: void Client
(4) 工厂方法模式
现需要设计一个程序来读取多种不同类型的图片格式,针对每一种图片格式都设计一个图片读取器(ImageReader),如GIF 图片读取器(GifReader)用于读取GIF 格式的图片、JPG 图片读取器(JpgReader)用于读取JPG 格式的图片。
图片读取器对象通过图片读取器工厂ImageReaderFactory 来创建,ImageReaderFactory 是一个抽象类,用于定义创建图片读取器的工厂方法,其子类GifReaderFactory 和JpgReaderFactory 用于创建具体的图片读取器对象。
使用工厂方法模式实现该程序的设计。
(5) 抽象工厂模式
某系统为了改进数据库操作的性能,自定义数据库连接对象Connection 和语句对象Statement ,可针对不同类型的数据库提供不同的连接对象和语句对象,如提供Oracle 或SQL Server 专用连接类和语句类,而且用户可以通过配置文件等方式根据实际需要动态更换系统数据库。
使用抽象工厂模式设计该系统。
用代码模拟实现数据库操作工厂实例,要求可以通过配置文件改变数据库类型。