软件设计模式实验报告(共31页).docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《软件设计模式实验报告(共31页).docx》由会员分享,可在线阅读,更多相关《软件设计模式实验报告(共31页).docx(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上 计算机科学与技术学院 实 验 报 告课程名称: 软件设计模式 专 业: 计算机科学与技术 班 级: 2011 级 1 班 学 号: 0 姓 名: 刘进平 实验一 单例模式的应用1 实验目的1) 掌握单例模式(Singleton)的特点2) 分析具体问题,使用单例模式进行设计。2 实验内容和要求很多应用项目都有配置文件,这些配置文件里面定义一些应用需要的参数数据。 通常客户端使用这个类是通过new一个AppConfig的实例来得到一个操作配置文件内容的对象。如果在系统运行中,有很多地方都需要使用配置文件的内容,系统中会同时存在多份配置文件的内容,这会严重浪费内存资源。
2、事实上,对于AppConfig类,在运行期间,只需要一个对象实例就够了。那么应该怎么实现呢?用C#控制台应用程序实现该单例模式。绘制该模式的UML图。UML图: 源代码: class Program static void Main(string args) AppConfig appConfigOne = AppConfig.GetParameterA(); AppConfig appConfigTwo = AppConfig.GetParameterA(); if (appConfigOne.Equals(appConfigTwo) Console.WriteLine(appConfigO
3、ne 和 appConfigTwo 代表的是同一个实例!); else Console.WriteLine(appConfigOne 和 appConfigTwo 代表的是不同的实例!); Console.ReadKey(); 运行结果:实验小结:通过这次实验,我了解了单例模式的具体概念和使用方法,并且感受到了他的优点带来的方便,但是同时也知道了该设计模式的缺点:由于单例模式中没有抽象层,因此单例类的扩展有很大困难。 实验二 工厂模式的应用1 实验目的1) 掌握工厂模式(Factory)的特点2) 分析具体问题,使用工厂模式进行设计。2 实验内容和要求有一个OEM制造商代理做HP笔记本电脑(L
4、aptop),后来该制造商得到了更多的品牌笔记本电脑的订单Acer,Lenovo,Dell,该OEM商发现,如果一次同时做很多个牌子的本本,有些不利于管理。利用工厂模式改善设计,用C#控制台应用程序实现该OEM制造商的工厂模式。绘制该模式的UML图。UML图:源代码: class Laptop public virtual void GetLaptop() class HpLaptop:Laptop public override void GetLaptop() Console.WriteLine(生产了一台Hp电脑); class AcerLaptop : Laptop public ov
5、erride void GetLaptop() Console.WriteLine(生产了一台Acer电脑); class LenovoLaptop : Laptop public override void GetLaptop() Console.WriteLine(生产了一台Lenovo电脑); class DellLaptop : Laptop public override void GetLaptop() Console.WriteLine(生产了一台Dell电脑); interface IFactory Laptop CreateFactory(); class HpFactory
6、:IFactory public Laptop CreateFactory() return new HpLaptop(); class AcerFactory : IFactory public Laptop CreateFactory() return new AcerLaptop(); class LenovoFactory : IFactory public Laptop CreateFactory() return new LenovoLaptop(); class DellFactory : IFactory public Laptop CreateFactory() return
7、 new DellLaptop(); class Program static void Main(string args) IFactory laptopFactory = new LenovoFactory(); IFactory laptopFactory1 = new HpFactory(); IFactory laptopFactory2 = new AcerFactory(); IFactory laptopFactory3 = new DellFactory(); Laptop laptop = laptopFactory.CreateFactory(); Laptop lapt
8、op1 = laptopFactory1.CreateFactory(); Laptop laptop2 = laptopFactory2.CreateFactory(); Laptop laptop3 = laptopFactory3.CreateFactory(); laptop.GetLaptop(); laptop1.GetLaptop(); laptop2.GetLaptop(); laptop3.GetLaptop(); Console.ReadKey(); 运行结果:实验小结:通过本次实验,我了解了工厂模式的适用范围和他的一些特点,工厂模式在一定程度上解决某些代码违反了面向对象设
9、计的开放封闭原则。同时还了解了它的一些优点和弊端,比如:使用工厂方法模式的另一个优点是在系统中加入新产品时,无需修改抽象工厂和抽象产品提供的接口,无需修改客户端,也无需修改其它的具体工厂和具体产品,而只要添加一个新的具体工厂和具体产品即可。实验三 抽象工厂模式的应用1 实验目的1) 掌握抽象工厂模式(Abstract Factory)的特点2) 分析具体问题,使用抽象工厂模式进行设计。2 实验内容和要求麦当劳(McDonalds)和肯德基(KFC)快餐店都经营汉堡(Hamburg)和可乐(Cola),用C#控制台应用程序实现这两个快餐店经营产品的抽象工厂模式。绘制该模式的UML图。UML图:源
10、代码: interface IHamburg void HamburgName(); class McDonaldsHamburg : IHamburg public void HamburgName() Console.WriteLine(这是McDonalds Hamburg); class KFCHamburg : IHamburg public void HamburgName() Console.WriteLine(这是KFC Hamburg); interface ICola void ColaName(); class McDonaldsCola : ICola public v
11、oid ColaName() Console.WriteLine(这是McDonalds Cola); class KFCCola : ICola public void ColaName() Console.WriteLine(这是KFC Cola); interface IFactory IHamburg CreateHamburg(); ICola CreateCola(); class McDonaldsFactory : IFactory public IHamburg CreateHamburg() return new McDonaldsHamburg(); public ICo
12、la CreateCola() return new McDonaldsCola(); class KFCFactory : IFactory public IHamburg CreateHamburg() return new KFCHamburg(); public ICola CreateCola() return new KFCCola(); class Program static void Main(string args) IFactory factory = new KFCFactory(); IFactory factory1 = new McDonaldsFactory()
13、; IHamburg hamburg1 = factory1.CreateHamburg(); ICola cola1 = factory1.CreateCola(); IHamburg hamburg = factory.CreateHamburg(); ICola cola = factory.CreateCola(); hamburg.HamburgName(); cola.ColaName(); hamburg1.HamburgName(); cola1.ColaName(); Console.ReadKey(); 运行结果:实验小结:通过本次实验,加深了对抽象工厂模式的理解。抽象工厂
14、提供一个创建一系列相关或相互依赖对象的接口,而不需指定他们具体的类。抽象工厂同样是存在缺点的,难以支持新种类的产品。由于以前对C+不太了解,本次实验加深了对C+的了解,强化了编程能力。理解解了构造函数,虚函数,纯虚函数,成员函数实现,类之间的继承等含义。但对于函数的调用问题常常出错,这在以后的学习中应多加注意和练习。实验四 建造者模式的应用1 实验目的1) 掌握建造者模式(Builder)的特点2) 分析具体问题,使用建造者模式进行设计。2 实验内容和要求建造者模式是一种创建型模式,它主要是应对项目中一些复杂对象的创建工作。所谓“复杂对象”,是指此对象中还含有其它的子对象。我们现在定义一个场景
15、:汽车生产必须包含车轮(Wheel)、油箱(OilBox)和车身(Body),应用建造者模式,用C#控制台应用程序实现该设计,构建BMW品牌和BenZ品牌汽车生产。绘制该模式的UML图。UML图:源代码: public abstract class ICar public abstract void Wheel(); public abstract void OilBox(); public abstract void Body(); class Benz:ICar public override void Wheel() Console.Write(奔驰的轮子,); public overr
16、ide void OilBox() Console.Write(奔驰的油箱,); public override void Body() Console.WriteLine(奔驰的车体!); class BMW:ICar public override void Wheel() Console.Write(宝马的轮子,); public override void OilBox() Console.Write(宝马的油箱,); public override void Body() Console.WriteLine(宝马的车体!); class Driver public void incl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件设计 模式 实验 报告 31
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内