设计模式-抽象工厂模式的应用
抽象工厂模式的应用
麦当劳(McDonalds)和肯德基(KFC)快餐店都经营汉堡(Hamburg)和可乐(Cole),用JAVA语言实现这两个快餐店经营产品的抽象工厂模式。绘制该模式的UML图。
【模式UML图】
【模式代码】
//Creator.java:
package sy_2.abstractFactory;
//抽象工厂角色
public interface Creator {
public Hamburg createHamburg();
public Cole createCole();
}
// KFCCreator.java:
package sy_2.abstractFactory;
public class KFCCreator implements Creator {
@Override
public Hamburg createHamburg() {
return new KFCHamburg();
}
@Override
public Cole createCole() {
return new KFCCole();
}
}
// McDonaldsCreator.java:
package sy_2.abstractFactory;
public class McDonaldsCreator implements Creator {
@Override
public Hamburg createHamburg() {
return new McDonaldsHamburg();
}
@Override
public Cole createCole() {
return new McDonaldsCole();
}
}
// Hamburg.java:
package sy_2.abstractFactory;
public interface Hamburg {
public void getHamburg();
}
// Cole.java:
package sy_2.abstractFactory;
public interface Cole {
public void getCole();
}
// McDonaldsHamburg.java:
package sy_2.abstractFactory;
public class McDonaldsHamburg implements Hamburg {
@Override
public void getHamburg() {
System.out.println("McDonalds的Hamburg");
}
}
// KFCHamburg.java:
package sy_2.abstractFactory;
public class KFCHamburg implements Hamburg {
@Override
public void getHamburg() {
System.out.println("KFC的Hamburg");
}
}
// McDonaldsCole.java:
package sy_2.abstractFactory;
public class McDonaldsCole implements Cole {
@Override
public void getCole() {
System.out.println("McDonalds的Cole");
}
}
// KFCCole.java:
package sy_2.abstractFactory;
public class KFCCole implements Cole {
@Override
public void getCole() {
System.out.println("KFC的Cole");
}
}
// AbstractFactoryMain.java:
package sy_2.abstractFactory;
public class AbstractFactoryMain {
public static void main(String[] args) {
System.out.println("想要McDonalds的Hamburg和Cole");
McDonaldsCreator mcDonalds = new McDonaldsCreator();
mcDonalds.createHamburg().getHamburg();
mcDonalds.createCole().getCole();
System.out.println("-------------------------------");
System.out.println("想要KFC的Hamburg和Cole");
KFCCreator kfcCreator = new KFCCreator();
kfcCreator.createHamburg().getHamburg();
kfcCreator.createCole().getCole();
}
}
【运行截图】
抽象工厂模式主要适用于以下情况:
- 一系列要独立于它的产品的创建、组合和表示时。
- 一个系统要由多个产品系列中的一个来配置时。
- 当要强调一系列相关的产品对象的设计以便进行联合使用时。
- 当要提供一个产品类库,而只要显示它们的接口而不是实现时。