设计模式实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《代码重构与设计模式》课堂实验徐海蛟博士2016.03
实验一工厂模式的应用
【实验目的】
1)掌握工厂模式(Factory)的特点
2)分析具体问题,使用工厂模式进行设计。
【实验容和要求】
有一个OEM制造商代理做HP笔记本电脑(Laptop),后来该制造商得到了更多的品牌笔记本电脑的订单Acer、Lenovo、Dell,该OEM商发现,如果一次同时做很多个牌子的本本,有些不利于管理。利用工厂模式改善设计,用控制台应用程序实现该OEM制造商的工厂模式。该模式的UML图如下。
【模式UML图】
【模式代码(JAVA语言实现)】
public class FactoryMethod {// 主类
public static void main(String[] args) {
Computer c;
Factory f = new
DellFactory();
c = f.getComputerType();
puterType();
f = new LenovoFactory();
1
《代码重构与设计模式》课堂实验徐海蛟博士2016.03
c = f.getComputerType();
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
2
《代码重构与设计模式》课堂实验徐海蛟博士2016.03
System.out.println("Dell Computer");
}
}
class Acer implements Computer{
Override
public void ComputerType() {
System.out.println("Acer Computer");
}
}
class Lenovo implements Computer{
Override
public void ComputerType() {
// TODO Auto‐generated method stub
System.out.println("Lenovo Computer");
}
}
【运行截图】
【实验小结】
通过本次实验,学会了使用工厂方法模式。工厂方法模式的适用性如下:当一个类不知道它所必须创建的对象的类时。
当一个类希望由它的子类来指定它所创建的对象时。
当类将创建对象的职责委托给多个帮助子类中的某一个,并且希望将哪一个帮助子类是代理这一信息局部化时。
3
《代码重构与设计模式》课堂实验徐海蛟博士2016.03
实验二抽象工厂模式的应用
【实验目的】
1)掌握抽象工厂模式(Abstract Factory)的特点
2)分析具体问题,使用抽象工厂模式进行设计。
【实验容和要求】
麦当劳(McDonalds)和肯德基(KFC)快餐店都经营汉堡(Hamburg)和可乐(Cola),用JAVA控制台应用程序实现这两个快餐店经营产品的抽象工厂模式。该模式的UML图如下。
【模式 UML 图】
【模式代码】
public class AbstractFactoryTest {
public static void main(String[] args) {
Hamburg h;
Cola c;
AbstractFactory af = new MDNFactory();
4
《代码重构与设计模式》课堂实验徐海蛟博士2016.03
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
*/