设计模式实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《设计模式》实验指导书

10学时

*师:**

实验一工厂模式的应用

【实验目的】

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

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

【实验内容和要求】

有一个OEM制造商代理做HP笔记本电脑(Laptop),后来该制造商得到了更多的品牌笔记本电脑的订单Acer,Lenovo,Dell,该OEM商发现,如果一次同时做很多个牌子的本本,有些不利于管理。利用工厂模式改善设计,用C#控制台应用程序实现该OEM制造商的工厂模式。绘制该模式的UML图。

【模式UML图】

【模式代码(JA V A语言实现)】

public class FactoryMethod {

public static void main(String[] args) {

Computer c;

Factory f=new DellFactory();

c=f.getComputerType();

puterType();

f=new LenovoFactory();

puterType();

f=new AcerFactory();

c=f.getComputerType();

puterType();

}

}

interface Factory{

Computer getComputerType();

}

class DellFactory implements Factory{ @Override

public Computer getComputerType() {

return new Dell();

}

}

class AcerFactory implements Factory{ @Override

public Computer getComputerType() {

return new Acer();

}

}

class LenovoFactory implements Factory{ @Override

public Computer getComputerType() {

return new Lenovo();

}

}

/**

* 电脑品牌

*/

interface Computer{

public void ComputerType();

}

class Dell implements Computer{

@Override

public void ComputerType() {

// TODO Auto-generated method stub

System.out.println("Dell Computer");

}

}

class Acer implements Computer{

@Override

System.out.println("Acer Computer");

}

}

class Lenovo implements Computer{

@Override

public void ComputerType() {

// TODO Auto-generated method stub

System.out.println("Lenovo Computer");

}

}

【运行截图】

【实验小结】

通过本次实验,学会了使用工厂方法模式。工厂方法模式的适用性如下:当一个类不知道它所必须创建的对象的类时。

当一个类希望由它的子类来指定它所创建的对象时。

当类将创建对象的职责委托给多个帮助子类中的某一个,并且希望将哪一个帮助子类是代理这一信息局部化时。

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

【实验目的】

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

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

【实验内容和要求】

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

【模式UML图】

【模式代码】

public class AbstractFactoryTest {

public static void main(String[] args) {

Hamburg h;

Cola c;

AbstractFactory af=new MDNFactory();

h=af.createHamburg();

c=af.createCola();

h.getHumburg();

c.getCola();

af=new KDJFactory();

h=af.createHamburg();

c=af.createCola();

h.getHumburg();

c.getCola();

}

}

interface AbstractFactory{

Hamburg createHamburg();

Cola createCola();

}

class MDNFactory implements AbstractFactory { @Override

public Hamburg createHamburg() {

return new MDNHamburg();

}

@Override

public Cola createCola() {

return new MDNCola();

}

}

class KDJFactory implements AbstractFactory{ @Override

public Hamburg createHamburg() {

return new KDJHamburg();

}

@Override

public Cola createCola() {

return new KDJCola();

}

}

/**

* kDJ &MDN

*/

interface Hamburg{

void getHumburg();

}

class MDNHamburg implements Hamburg{

相关文档
最新文档