设计模式实验报告.docx

上传人:b****8 文档编号:9197015 上传时间:2023-05-17 格式:DOCX 页数:15 大小:28.69KB
下载 相关 举报
设计模式实验报告.docx_第1页
第1页 / 共15页
设计模式实验报告.docx_第2页
第2页 / 共15页
设计模式实验报告.docx_第3页
第3页 / 共15页
设计模式实验报告.docx_第4页
第4页 / 共15页
设计模式实验报告.docx_第5页
第5页 / 共15页
设计模式实验报告.docx_第6页
第6页 / 共15页
设计模式实验报告.docx_第7页
第7页 / 共15页
设计模式实验报告.docx_第8页
第8页 / 共15页
设计模式实验报告.docx_第9页
第9页 / 共15页
设计模式实验报告.docx_第10页
第10页 / 共15页
设计模式实验报告.docx_第11页
第11页 / 共15页
设计模式实验报告.docx_第12页
第12页 / 共15页
设计模式实验报告.docx_第13页
第13页 / 共15页
设计模式实验报告.docx_第14页
第14页 / 共15页
设计模式实验报告.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

设计模式实验报告.docx

《设计模式实验报告.docx》由会员分享,可在线阅读,更多相关《设计模式实验报告.docx(15页珍藏版)》请在冰点文库上搜索。

设计模式实验报告.docx

设计模式实验报告

实验一单例模式的应用

1实验目的

1)掌握单例模式(Singleton)的特点

2)分析具体问题,使用单例模式进行设计。

2实验容和要求

很多应用项目都有配置文件,这些配置文件里面定义一些应用需要的参数数据。

通常客户端使用这个类是通过new一个AppConfig的实例来得到一个操作配置文件容的对象。

如果在系统运行中,有很多地方都需要使用配置文件的容,系统中会同时存在多份配置文件的容,这会严重浪费存资源。

事实上,对于AppConfig类,在运行期间,只需要一个对象实例就够了。

那么应该怎么实现呢?

用C#控制台应用程序实现该单例模式。

绘制该模式的UML图。

3实验代码

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Threading.Tasks;

namespaceAppConfig

{

publicclassSingleton

{

privatestaticSingletoninstance;

privateSingleton()

{

}

publicstaticSingletonGetInstance()

{

if(instance==null)

{

instance=newSingleton();

}

returninstance;

}

}

classProgram

{

staticvoidMain(string[]args)

{

SingletonsingletonOne=Singleton.GetInstance();

SingletonsingletonTwo=Singleton.GetInstance();

if(singletonOne.Equals(singletonTwo))

{

Console.WriteLine("singletonOne和singletonTwo代表的是同一个实例");

}

else

{

Console.WriteLine("singletonOne和singletonTwo代表的是不同实例");

}

Console.ReadKey();

}

}

}

4实验结果

 

实验二工厂模式的应用

1实验目的

1)掌握工厂模式(Factory)的特点

2)分析具体问题,使用工厂模式进行设计。

2实验容和要求

有一个OEM制造商代理做HP笔记本电脑(Laptop),后来该制造商得到了更多的品牌笔记本电脑的订单Acer,Lenovo,Dell,该OEM商发现,如果一次同时做很多个牌子的本本,有些不利于管理。

利用工厂模式改善设计,用C#控制台应用程序实现该OEM制造商的工厂模式。

绘制该模式的UML图。

3实验代码

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Threading.Tasks;

namespaceFactory

{

classComputer

{

publicvirtualvoidprint()

{

Console.Write("我是Computer\n");

}

}

classHPComputer:

Computer

{

publicoverridevoidprint()

{

Console.Write("我是HPComputer\n");

}

}

classAcerComputer:

Computer

{

publicoverridevoidprint()

{

Console.Write("我是AcerComputer\n");

}

}

classDellComputer:

Computer

{

publicoverridevoidprint()

{

Console.Write("我是DellComputer\n");

}

}

interfaceIfactory

{

ComputerCreateComputer();

}

classHPFactory:

Ifactory

{

publicComputerCreateComputer()

{

returnnewHPComputer();

}

}

classAcerFactory:

Ifactory

{

publicComputerCreateComputer()

{

returnnewAcerComputer();

}

}

classDellFactory:

Ifactory

{

publicComputerCreateComputer()

{

returnnewDellComputer();

}

}

classProgram

{

staticvoidMain(string[]args)

{

Ifactoryfactory=newHPFactory();

Computercomputer=factory.CreateComputer();

computer.print();

factory=newDellFactory();

computer=factory.CreateComputer();

computer.print();

factory=newAcerFactory();

computer=factory.CreateComputer();

computer.print();

}

}

}

4实验截图

 

实验三抽象工厂模式的应用

1实验目的

1)掌握抽象工厂模式(AbstractFactory)的特点

2)分析具体问题,使用抽象工厂模式进行设计。

2实验容和要求

麦当劳(McDonalds)和肯德基(KFC)快餐店都经营汉堡(Hamburg)和可乐(Cola),用C#控制台应用程序实现这两个快餐店经营产品的抽象工厂模式。

绘制该模式的UML图。

3实验代码

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Threading.Tasks;

namespaceAbstractFactory

{

classCola

{

publicvirtualvoidprint(){

Console.Write("iamcola\n");

}

}

classHum

{

publicvirtualvoidprint()

{

Console.Write("iamhamburger\n");

}

}

classKFCCola:

Cola

{

publicoverridevoidprint()

{

Console.Write("iamKFCcola\n");

}

}

classMDCola:

Cola

{

publicoverridevoidprint()

{

Console.Write("iamMDcola\n");

}

}

classKFChum:

Hum

{

publicoverridevoidprint()

{

Console.Write("iamKFChamburger\n");

}

}

classMDhum:

Hum

{

publicoverridevoidprint()

{

Console.Write("iamMDhamburger\n");

}

}

abstractclassfactory

{

publicabstractHumcreateHum();

publicabstractColacreateCola();

}

classKFCFectory:

factory

{

publicoverrideHumcreateHum()

{

returnnewKFChum();

}

publicoverrideColacreateCola()

{

returnnewKFCCola();

}

}

classMDFectory:

factory

{

publicoverrideHumcreateHum()

{

returnnewMDhum();

}

publicoverrideColacreateCola()

{

returnnewMDCola();

}

}

classProgram

{

staticvoidMain(string[]args)

{

factoryf=newKFCFectory();

Humh=f.createHum();

Colac=f.createCola();

h.print();

c.print();

f=newMDFectory();

h=f.createHum();

c=f.createCola();

h.print();

c.print();

}

}

}

4实验结果

实验四建造者模式的应用

1实验目的

1)掌握建造者模式(Builder)的特点

2)分析具体问题,使用建造者模式进行设计。

2实验容和要求

建造者模式是一种创建型模式,它主要是应对项目中一些复杂对象的创建工作。

所谓“复杂对象”,是指此对象中还含有其它的子对象。

我们现在定义一个场景:

汽车生产必须包含车轮(Wheel)、油箱(OilBox)和车身(Body),应用建造者模式,用C#控制台应用程序实现该设计,构建BMW品牌和BenZ品牌汽车生产。

绘制该模式的UML图。

3实验代码

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Threading.Tasks;

namespaceBuilder

{

classCar

{

privateStringwheel;

privateStringoilBox;

privateStringbody;

publicvoidsetWheel(Stringwheel)

{

this.wheel=wheel;

}

publicvoidsetOilBox(StringoilBox)

{

this.oilBox=oilBox;

}

publicvoidsetBody(Stringbody)

{

this.body=body;

}

publicvoidintrouduce()

{

Console.WriteLine(wheel);

Console.WriteLine(oilBox);

Console.WriteLine(body);

}

}

abstractclassCarBuilder

{

protectedCarcar=newCar();

publicabstractvoidbuildWheel();

publicabstractvoidbuildOilBox();

publicabstractvoidbuildBody();

publicCargetCar()

{

returncar;

}

}

classBMWBuilder:

CarBuilder

{

publicoverridevoidbuildBody()

{

car.setWheel("wheelmadeinBMW");

}

publicoverridevoidbuildOilBox()

{

car.setOilBox("oilBoxmadeinBMW");

}

publicoverridevoidbuildWheel()

{

car.setBody("bodymadeinBMW");

}

}

classBenZBuilder:

CarBuilder

{

publicoverridevoidbuildBody()

{

car.setWheel("wheelmadeinBenz");

}

publicoverridevoidbuildOilBox()

{

car.setOilBox("oilBoxmadeinBenz");

}

publicoverridevoidbuildWheel()

{

car.setBody("bodymadeinBenz");

}

}

classDirector

{

privateCarBuildercarBuilder;

publicDirector(CarBuildercarBuilder)

{

this.carBuilder=carBuilder;

}

publicvoidsetCarBuilder(CarBuildercarBuilder)

{

this.carBuilder=carBuilder;

}

publicvoidconstruct()

{

carBuilder.buildWheel();

carBuilder.buildBody();

carBuilder.buildOilBox();

}

}

classProgram

{

staticvoidMain(string[]args)

{

Carcar;

CarBuildercarbuilder=newBMWBuilder();

Directordirector=newDirector(carbuilder);

director.construct();

car=carbuilder.getCar();

car.introuduce();

carbuilder=newBenZBuilder();

director.setCarBuilder(carbuilder);

director.construct();

car=carbuilder.getCar();

car.introuduce();

Console.ReadKey();

}

}

}

4实验结果

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2