实验名称 抽象工厂模式的应用 日期 2019年 03 月25 日
一、实验目的:
1) 掌握抽象工厂模式(Abstract Factory)的特点
2) 分析具体问题,使用抽象工厂模式进行设计
麦当劳(McDonalds)和肯德基(KFC)快餐店都经营汉堡(Hamburg)和可乐(Cole),用JAVA语言实现(C#控制台应用程序实现)这两个快餐店经营产品的抽象工厂模式。绘制该模式的UML图。
二、实验环境:
三、实验内容:
【模式UML图】
【模式代码】
package 软件设计体系结构;
public interface Coke {
public void GetCoke();
}
package 软件设计体系结构;
public interface Hamburgers {
public void GetHamburger();
}
package 软件设计体系结构;
public interface Kitchen {
Hamburgers Makinghamburgers();
Coke Makingcoke();
}
package 软件设计体系结构;
public class KFC implements Kitchen {
public Coke Makingcoke(){
return (Coke) new KFCHamburger();
}
public Hamburgers Makinghamburgers(){
return (Hamburgers) new KFCHamburger();
}
}
package 软件设计体系结构;
public class McDonald implements Kitchen {
public Coke Makingcoke(){
return (Coke) new McHamburger();
}
public Hamburgers Makinghamburgers(){
return (Hamburgers) new McHamburger();
}
}
package 软件设计体系结构;
public class KFCCoke {
public void GetCoke(){
System.out.println("获得一杯可乐");
}
}
package 软件设计体系结构;
public class KFCCoke {
public void GetCoke(){
System.out.println("获得一杯可乐");
}
}
package 软件设计体系结构;
public class McCoke {
public void GetCoke(){
System.out.println("获得一杯可乐");
}
}
package 软件设计体系结构;
public class McHamburger {
public void GetHamburger(){
System.out.println("获得一个汉堡包");
}
}
package 软件设计体系结构;
public class Test {
public static void main(String[] args) {
Hamburgers h;
Coke c;
Kitchen kitchen = new KFC();
h = kitchen.Makinghamburgers();
c = kitchen.Makingcoke();
h.GetHamburger();
c.GetCoke();
kitchen = new McDonald();
h = kitchen.Makinghamburgers();
c = kitchen.Makingcoke();
h.GetHamburger();
c.GetCoke();
}
}
四、心得体会:
抽象工厂模式主要适用于以下情况:
一系列要独立于它的产品的创建、组合和表示时。、
一个系统要由多个产品系列中的一个来配置时。
当要强调一系列相关的产品对象的设计以便进行联合使用时。
当要提供一个产品类库,而只要显示它们的接口而不是实现时。