1、设计模式实验代码重构与设计模式课堂实验徐海蛟博士 2016.03实验一 工厂模式的应用【实验目的】1) 掌握工厂模式(Factory)的特点2) 分析具体问题,使用工厂模式进行设计。【实验内容和要求】有一个 OEM 制造商代理做 HP 笔记本电脑(Laptop),后来该制造商得到了更多的品牌笔记本电脑的订单 Acer、Lenovo、Dell,该 OEM 商发现,如果一次同时做很多个牌子的本本,有些不利于管理。利用工厂模式改善设计,用控制台应用程序实现该 OEM 制造商的工厂模式。该模式的 UML 图如下。【模式UML图】【模式代码(JAVA 语言实现)】public class Factory
2、Method / 主类 public static void main(String args) Computer c; Factory f = new DellFactory(); c = f.getComputerType(); c.ComputerType(); f = new LenovoFactory(); 1代码重构与设计模式课堂实验徐海蛟博士 2016.03 c = f.getComputerType(); c.ComputerType(); f = new AcerFactory(); c = f.getComputerType(); c.ComputerType(); int
3、erface 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 Comp
4、uter getComputerType() return new Lenovo(); /* * 电脑品牌 */ interface Computer public void ComputerType(); class Dell implements Computer Override public void ComputerType() / TODO Autogenerated method stub 2代码重构与设计模式课堂实验徐海蛟博士 2016.03 System.out.println(Dell Computer); class Acer implements Computer Ov
5、erride public void ComputerType() System.out.println(Acer Computer); class Lenovo implements Computer Override public void ComputerType() / TODO Autogenerated method stub System.out.println(Lenovo Computer); 【运行截图】【实验小结】通过本次实验,学会了使用工厂方法模式。工厂方法模式的适用性如下:当一个类不知道它所必须创建的对象的类时。当一个类希望由它的子类来指定它所创建的对象时。当类将创建
6、对象的职责委托给多个帮助子类中的某一个,并且希望将哪一个帮助子类是代理这一信息局部化时。3代码重构与设计模式课堂实验徐海蛟博士 2016.03实验二 抽象工厂模式的应用【实验目的】1) 掌握抽象工厂模式(Abstract Factory)的特点2) 分析具体问题,使用抽象工厂模式进行设计。【实验内容和要求】麦当劳(McDonalds)和肯德基(KFC)快餐店都经营汉堡(Hamburg)和可乐(Cola),用 JAVA 控制台应用程序实现这两个快餐店经营产品的抽象工厂模式。该模式的 UML 图如下。【模式 UML 图】【模式代码】 public class AbstractFactoryTest
7、 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(); inter
8、face 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 cr
9、eateHamburg() return new KDJHamburg(); Override public Cola createCola() return new KDJCola(); /* * kDJ & */ interface Hamburg 5代码重构与设计模式课堂实验徐海蛟博士 2016.03 void getHumburg(); class MDNHamburg implements Hamburg Override public void getHumburg() System.out.println(MDNHamburg); class KDJHamburg impleme
10、nts Hamburg Override public void getHumburg() / TODO Autogenerated method stub System.out.println(KDJHamburg); interface Cola void getCola(); class MDNCola implements Cola Override public void getCola() System.out.println(MDNCola); class KDJCola implements Cola Override public void getCola() System.
11、out.println(KDJCola); 【运行截图】 6代码重构与设计模式课堂实验徐海蛟博士 2016.03【实验小结】抽象工厂模式主要适用于以下情况:一系列要独立于它的产品的创建、组合和表示时。、一个系统要由多个产品系列中的一个来配置时。当要强调一系列相关的产品对象的设计以便进行联合使用时。当要提供一个产品类库,而只要显示它们的接口而不是实现时。7代码重构与设计模式课堂实验徐海蛟博士 2016.03实验三 适配器模式的应用【实验目的】1) 掌握适配器模式(Adapter)的特点2) 分析具体问题,使用适配器模式进行设计。【实验内容和要求】一个软件团队开发绘图系统,设计了圆对象(Circl
12、e)、矩形对象(Rectangle),线对象(Line)都支持 Draw()函数,即可以通过 Draw()函数绘制图形。为了加快项目进度,将角度对象(Angle)绘制功能交给了合作团队实现。但合作团队将角度对象绘制函数定为了 DrawAngle()。绘图系统提供给用户后,用户不满意,希望能统一的调用,不用记太多命令。应用适配器模式,用 JAVA 控制台应用程序完善该设计。该模式的 UML 图如下。【模式UML图】【模式代码】public class AdapterTest public static void main(String args) Paint a = new AngleAdapter(); a.draw(); 8代码重构与设计模式课堂实验interface Paint 徐海蛟博士 2016.03 void draw(); class Circle implements Paint Override
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1