抽象工厂模式----------JAVA实现

题目:

某餐馆有三种主餐,分别是牛奶和汤匙、面包和刀、肉和叉子 ,其中牛奶、面包和肉都属于食物,汤匙、刀和叉子都属于餐具,请利用抽象工厂模式实现对主餐的创建。

 

1.相关术语

  • 产品等级结构:产品的继承结构,与类的继承相似。例如牛奶是一个抽象的类,那么牛奶和叉子、牛奶和刀和牛奶和勺子就是其子类。

  • 产品族:指同一个工厂生产的,位于不同的产品等级结构的一组产品。例如牛奶,面包,肉都属于主餐,工具的等级结构不同,构成一个产品族。

  • 抽象工厂:是一个接口,抽象工厂模式的核心,包含对多个产品等级结构的声明,任何工厂类都必须实现这个接口。

  • 具体工厂:是抽象工厂的实现,负责实例化某个产品族中的产品对象。例如牛奶和勺子组合、肉和刀组合这些产品。

 

2.组合方式和等级结构

 

3.具体实现

 

Group接口

public interface Group {
	
	public void get();

}

milk,meal,bread抽象类

milk

public abstract class milk implements Group {
	
	
	//吃牛奶用汤勺
	public abstract void get();

}

meal

public abstract class meal implements Group {

	public abstract void get();
}

bread

public abstract class bread implements Group {

	
	public abstract void get();
	
}

Usemilk类

public class Usemilk extends milk {

	@Override
	public void get() {
		// TODO Auto-generated method stub
		System.out.println("使用牛奶和汤勺");
	}

}

Usemeal类

public class Usemeal extends meal {

	@Override
	public void get() {
		// TODO Auto-generated method stub
		System.out.println("使用肉和叉子");
	}

}

Usebread类

public class Usebread extends bread {

	@Override
	public void get() {
		// TODO Auto-generated method stub
		System.out.println("使用面包和刀 ");
	}

}

 

IAbstractFactory 抽象工厂类

public interface IAbstractFactory {

	//实例化牛奶和勺子
	public Group getmilk();
	
	public Group getmeal();
	
	public Group getbread();
}

ChooseFactory具体化工厂

public class ChooseFactory implements IAbstractFactory {

	@Override
	public Group getmeal() {
		// TODO Auto-generated method stub
		return new Usemeal();
	}

	@Override
	public Group getmilk() {
		// TODO Auto-generated method stub
		return new Usemilk();
	}

	@Override
	public Group getbread() {
		// TODO Auto-generated method stub
		return new Usebread();
	}

	
}

Test测试

public class Test {

	/**
	 * @param args
	 */
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub

				//创建工厂
				IAbstractFactory factory = new ChooseFactory();
				Group milk = factory.getmilk();
				System.out.println("使用的工具是*************");
				//通过工厂实现创建牛奶和勺子实例
				milk.get();
				
				System.out.println("使用的工具是*************");
				Group meal = factory.getmeal();
				meal.get();
				
				System.out.println("使用的工具是*************");
				Group bread = factory.getbread();
				bread.get();
				
				
	}
	

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ybbgrain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值