设计模式-抽象工厂模式的应用

抽象工厂模式的应用

麦当劳(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();
	}

}

【运行截图】
运行结果

抽象工厂模式主要适用于以下情况:

  • 一系列要独立于它的产品的创建、组合和表示时。
  • 一个系统要由多个产品系列中的一个来配置时。
  • 当要强调一系列相关的产品对象的设计以便进行联合使用时。
  • 当要提供一个产品类库,而只要显示它们的接口而不是实现时。

猜你喜欢

转载自blog.csdn.net/xu_benjamin/article/details/89073909