当前位置:文档之家› 设计模式实验报告

设计模式实验报告

实验一单例模式的应用1 实验目的1) 掌握单例模式(Singleton)的特点2) 分析具体问题,使用单例模式进行设计。

2 实验内容和要求很多应用项目都有配置文件,这些配置文件里面定义一些应用需要的参数数据。

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

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

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

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

绘制该模式的UML图。

3 实验代码using System;using ;using ;using AppConfig{public class Singleton{private static Singleton instance;private Singleton(){}public static Singleton GetInstance(){if (instance == null){instance = new Singleton();}return instance;}}class Program{static void Main(string[] args){Singleton singletonOne = ();Singleton singletonTwo = ();if (singletonTwo)){("singletonOne 和 singletonTwo 代表的是同一个实例"); }else{("singletonOne 和 singletonTwo 代表的是不同实例"); }();}}}4 实验结果实验二工厂模式的应用1 实验目的1) 掌握工厂模式(Factory)的特点2) 分析具体问题,使用工厂模式进行设计。

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

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

绘制该模式的UML图。

3 实验代码using System;using ;using ;using Factory{class Computer{public virtual void print(){("我是Computer\n");}}class HPComputer:Computer{public override void print(){("我是HPComputer\n");}}class AcerComputer : Computer{public override void print(){("我是AcerComputer\n");}}class DellComputer : Computer{public override void print(){("我是DellComputer\n");}}interface Ifactory{Computer CreateComputer();}class HPFactory : Ifactory{public Computer CreateComputer(){return new HPComputer();}}class AcerFactory : Ifactory{public Computer CreateComputer(){return new AcerComputer();}}class DellFactory : Ifactory{public Computer CreateComputer(){return new DellComputer();}}class Program{static void Main(string[] args){Ifactory factory = new HPFactory();Computer computer = ();();factory = new DellFactory();computer = ();();factory = new AcerFactory();computer = ();();}}}4 实验截图实验三抽象工厂模式的应用1 实验目的1) 掌握抽象工厂模式(Abstract Factory)的特点2) 分析具体问题,使用抽象工厂模式进行设计。

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

绘制该模式的UML图。

3 实验代码using System;using ;using ;using AbstractFactory{class Cola{public virtual void print(){("i am cola\n");}}class Hum{public virtual void print(){("i am hamburger\n");}}class KFCCola : Cola{public override void print(){("i am KFCcola\n");}}class MDCola : Cola{public override void print(){}}class KFChum:Hum{public override void print(){("i am KFChamburger\n");}}class MDhum : Hum{public override void print(){("i am MDhamburger\n");}}abstract class factory{public abstract Hum createHum();public abstract Cola createCola(); }class KFCFectory : factory{public override Hum createHum(){return new KFChum();}public override Cola createCola() {return new KFCCola();}}class MDFectory : factory{public override Hum createHum(){}public override Cola createCola(){return new MDCola();}}class Program{static void Main(string[] args){factory f = new KFCFectory();Hum h = ();Cola c = ();();();f = new MDFectory();h = ();c = ();();();}}}4 实验结果实验四建造者模式的应用1 实验目的1) 掌握建造者模式(Builder)的特点2) 分析具体问题,使用建造者模式进行设计。

2 实验内容和要求建造者模式是一种创建型模式,它主要是应对项目中一些复杂对象的创建工作。

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

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

绘制该模式的UML图。

3 实验代码using System;using ;using ;using Builder{class Car{private String wheel;private String oilBox;private String body;public void setWheel(String wheel){= wheel;}public void setOilBox(String oilBox){= oilBox;}public void setBody(String body){= body;}public void introuduce(){(wheel);(oilBox);(body);}}abstract class CarBuilder{protected Car car = new Car();public abstract void buildWheel();public abstract void buildOilBox();public abstract void buildBody();public Car getCar(){return car;}}class BMWBuilder : CarBuilder{public override void buildBody(){("wheel made in BMW");}public override void buildOilBox() {("oilBox made in BMW");}public override void buildWheel() {("body made in BMW");}}class BenZBuilder : CarBuilder{public override void buildBody(){("wheel made in Benz");}public override void buildOilBox() {("oilBox made in Benz");}public override void buildWheel() {("body made in Benz");}}class Director{private CarBuilder carBuilder;public Director(CarBuilder carBuilder){= carBuilder;}public void setCarBuilder(CarBuilder carBuilder) {= carBuilder;}public void construct(){();();();}}class Program{static void Main(string[] args){Car car;CarBuilder carbuilder = new BMWBuilder();Director director = new Director(carbuilder); ();car = ();();carbuilder = new BenZBuilder();(carbuilder);();car = ();();();}}}4 实验结果。

相关主题