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

抽象工厂模式的应用

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

}

【运行截图】

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

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

相关推荐

10-30 22:18
已编辑
毛坦厂中学 C++
点赞 评论 收藏
分享
09-29 11:19
门头沟学院 Java
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务