设计模式实验报告.docx
《设计模式实验报告.docx》由会员分享,可在线阅读,更多相关《设计模式实验报告.docx(15页珍藏版)》请在冰点文库上搜索。
设计模式实验报告
实验一单例模式的应用
1实验目的
1)掌握单例模式(Singleton)的特点
2)分析具体问题,使用单例模式进行设计。
2实验内容和要求
很多应用项目都有配置文件,这些配置文件里面定义一些应用需要的参数数据。
通常客户端使用这个类是通过new一个AppConfig的实例来得到一个操作配置文件内容的对象。
如果在系统运行中,有很多地方都需要使用配置文件的内容,系统中会同时存在多份配置文件的内容,这会严重浪费内存资源。
事实上,对于AppConfig类,在运行期间,只需要一个对象实例就够了。
那么应该怎么实现呢用C#控制台应用程序实现该单例模式。
绘制该模式的UML图。
3实验代码
usingSystem;
using;
using;
usingAppConfig
{
publicclassSingleton
{
privatestaticSingletoninstance;
privateSingleton()
{
}
publicstaticSingletonGetInstance()
{
if(instance==null)
{
instance=newSingleton();
}
returninstance;
}
}
classProgram
{
staticvoidMain(string[]args)
{
SingletonsingletonOne=();
SingletonsingletonTwo=();
if(singletonTwo))
{
("singletonOne和singletonTwo代表的是同一个实例");
}
else
{
("singletonOne和singletonTwo代表的是不同实例");
}
();
}
}
}
4实验结果
实验二工厂模式的应用
1实验目的
1)掌握工厂模式(Factory)的特点
2)分析具体问题,使用工厂模式进行设计。
2实验内容和要求
有一个OEM制造商代理做HP笔记本电脑(Laptop),后来该制造商得到了更多的品牌笔记本电脑的订单Acer,Lenovo,Dell,该OEM商发现,如果一次同时做很多个牌子的本本,有些不利于管理。
利用工厂模式改善设计,用C#控制台应用程序实现该OEM制造商的工厂模式。
绘制该模式的UML图。
3实验代码
usingSystem;
using;
using;
usingFactory
{
classComputer
{
publicvirtualvoidprint()
{
("我是Computer\n");
}
}
classHPComputer:
Computer
{
publicoverridevoidprint()
{
("我是HPComputer\n");
}
}
classAcerComputer:
Computer
{
publicoverridevoidprint()
{
("我是AcerComputer\n");
}
}
classDellComputer:
Computer
{
publicoverridevoidprint()
{
("我是DellComputer\n");
}
}
interfaceIfactory
{
ComputerCreateComputer();
}
classHPFactory:
Ifactory
{
publicComputerCreateComputer()
{
returnnewHPComputer();
}
}
classAcerFactory:
Ifactory
{
publicComputerCreateComputer()
{
returnnewAcerComputer();
}
}
classDellFactory:
Ifactory
{
publicComputerCreateComputer()
{
returnnewDellComputer();
}
}
classProgram
{
staticvoidMain(string[]args)
{
Ifactoryfactory=newHPFactory();
Computercomputer=();
();
factory=newDellFactory();
computer=();
();
factory=newAcerFactory();
computer=();
();
}
}
}
4实验截图
实验三抽象工厂模式的应用
1实验目的
1)掌握抽象工厂模式(AbstractFactory)的特点
2)分析具体问题,使用抽象工厂模式进行设计。
2实验内容和要求
麦当劳(McDonalds)和肯德基(KFC)快餐店都经营汉堡(Hamburg)和可乐(Cola),用C#控制台应用程序实现这两个快餐店经营产品的抽象工厂模式。
绘制该模式的UML图。
3实验代码
usingSystem;
using;
using;
usingAbstractFactory
{
classCola
{
publicvirtualvoidprint(){
("iamcola\n");
}
}
classHum
{
publicvirtualvoidprint()
{
("iamhamburger\n");
}
}
classKFCCola:
Cola
{
publicoverridevoidprint()
{
("iamKFCcola\n");
}
}
classMDCola:
Cola
{
publicoverridevoidprint()
{
("iamMDcola\n");
}
}
classKFChum:
Hum
{
publicoverridevoidprint()
{
("iamKFChamburger\n");
}
}
classMDhum:
Hum
{
publicoverridevoidprint()
{
("iamMDhamburger\n");
}
}
abstractclassfactory
{
publicabstractHumcreateHum();
publicabstractColacreateCola();
}
classKFCFectory:
factory
{
publicoverrideHumcreateHum()
{
returnnewKFChum();
}
publicoverrideColacreateCola()
{
returnnewKFCCola();
}
}
classMDFectory:
factory
{
publicoverrideHumcreateHum()
{
returnnewMDhum();
}
publicoverrideColacreateCola()
{
returnnewMDCola();
}
}
classProgram
{
staticvoidMain(string[]args)
{
factoryf=newKFCFectory();
Humh=();
Colac=();
();
();
f=newMDFectory();
h=();
c=();
();
();
}
}
}
4实验结果
实验四建造者模式的应用
1实验目的
1)掌握建造者模式(Builder)的特点
2)分析具体问题,使用建造者模式进行设计。
2实验内容和要求
建造者模式是一种创建型模式,它主要是应对项目中一些复杂对象的创建工作。
所谓“复杂对象”,是指此对象中还含有其它的子对象。
我们现在定义一个场景:
汽车生产必须包含车轮(Wheel)、油箱(OilBox)和车身(Body),应用建造者模式,用C#控制台应用程序实现该设计,构建BMW品牌和BenZ品牌汽车生产。
绘制该模式的UML图。
3实验代码
usingSystem;
using;
using;
usingBuilder
{
classCar
{
privateStringwheel;
privateStringoilBox;
privateStringbody;
publicvoidsetWheel(Stringwheel)
{
=wheel;
}
publicvoidsetOilBox(StringoilBox)
{
=oilBox;
}
publicvoidsetBody(Stringbody)
{
=body;
}
publicvoidintrouduce()
{
(wheel);
(oilBox);
(body);
}
}
abstractclassCarBuilder
{
protectedCarcar=newCar();
publicabstractvoidbuildWheel();
publicabstractvoidbuildOilBox();
publicabstractvoidbuildBody();
publicCargetCar()
{
returncar;
}
}
classBMWBuilder:
CarBuilder
{
publicoverridevoidbuildBody()
{
("wheelmadeinBMW");
}
publicoverridevoidbuildOilBox()
{
("oilBoxmadeinBMW");
}
publicoverridevoidbuildWheel()
{
("bodymadeinBMW");
}
}
classBenZBuilder:
CarBuilder
{
publicoverridevoidbuildBody()
{
("wheelmadeinBenz");
}
publicoverridevoidbuildOilBox()
{
("oilBoxmadeinBenz");
}
publicoverridevoidbuildWheel()
{
("bodymadeinBenz");
}
}
classDirector
{
privateCarBuildercarBuilder;
publicDirector(CarBuildercarBuilder)
{
=carBuilder;
}
publicvoidsetCarBuilder(CarBuildercarBuilder)
{
=carBuilder;
}
publicvoidconstruct()
{
();
();
();
}
}
classProgram
{
staticvoidMain(string[]args)
{
Carcar;
CarBuildercarbuilder=newBMWBuilder();
Directordirector=newDirector(carbuilder);
();
car=();
();
carbuilder=newBenZBuilder();
(carbuilder);
();
car=();
();
();
}
}
}
4实验结果
精心搜集整理,只为你的需要