java学习之路2--简单工厂模式实现饮料自动贩卖机

java学习之路2 用简单工厂模式实现饮料自动贩卖机


用简单工厂模式实现饮料自动贩卖机)

功能简介

接收用户输入的信息,选择购买的饮料。
可供选择的饮料有:咖啡和可乐。
其中,购买咖啡时可以选择:容量
购买可乐时可以选择:买可口可乐还是百事可乐还是健力宝。
能对其进行进货操作。

具体实现

1.简单工厂模式

通过工厂类创建对象,并且根据传入参数决定具体子类对象的做法,就是简单工厂模式
工厂模式由客户,工厂,抽象产品,具体产品4部分组成。
其中抽象产品类:是对产品的抽象概述,是由工厂模式所创建对象的超类。一般用抽象函数和接口来实现。
具体产品类:工厂模式中创建任何的对象都是这个类的实例。
工厂类:被客户段直接调用来创建产品类,是工厂模式的核心。
客户类:通过调用工厂类来直接创建想要的产品对象,直接对对象进行访问。
在这里插入图片描述

2.代码

抽象产品类:

package factory;

public abstract class Drink 
{
		public abstract void sell(String name,int num);
		public abstract void comein(String name,int num );
}

具体产品类(coke):

package factory;

public class Coke extends Drink {
		private String[] cokename=new String[3];
		private int[] num=new int[3];
		
		public Coke () 
		{
			for(int i=0;i<=2;i++)
			{
				num[i]=20;
			}
			cokename[0]="可口可乐";
			cokename[1]="百事可乐";
			cokename[2]="健力宝";
		}
		
		public void sell(String name,int num) 
		{
			for(int i=0;i<=2;i++)
			{
				if(name.equals(cokename[i]))
				{	
					this.num[i]-=num;
					System.out.println("你的货物"+cokename[i]+"已出柜");
				}
				}
			}
		
		
		public void comein(String name,int num)
		{
			for(int i=0;i<=2;i++)
			{
				if(name.equals(cokename[i]))
				{	
					this.num[i]+=num;
					System.out.println("货物"+cokename[i]+"已添加数量"+num+" 总量为"+this.num[i]);
				}
				}
			}
		}

具体产品类(coffee):

package factory;

public class Coffee extends Drink {
		private String Coffeename;
		private int num;//按升作单位
		
		public Coffee() {
			Coffeename="咖啡";
			num=20;
		}
		
		public void sell(String name,int num) {
			this.num-=num;
			System.out.println("你的"+num+"ml咖啡已出柜");
		}
		
		public void comein(String name ,int num) {
			this.num+=num;
			System.out.println("咖啡总量为:"+this.num);
		}
}

工厂类:

package factory;

public class Myfactory {
	//利用工厂模式的工厂作用,将用户所需的实体工厂对象返回给用户。
	public Drink CreateDrink(String drinkname) {
		switch(drinkname)
		{
			case "咖啡":
				return new Coffee();
				
			case "可乐":
				return new Coke();
			
		}
		return null;
	}
}

客户类:

package factory;

import java.util.Scanner;

public class Client {

	public static void main(String[] args) {
			//创建工厂对象
		Myfactory factory = new Myfactory();
		
		System.out.println("请输入你想要购买/进货的品种。");
		//只写了购买,进货同理。
		System.out.println("1.咖啡 2.可乐");
		
		int choise=0;
		Scanner in =new Scanner(System.in);
		choise= in.nextInt();
		
		System.out.println("请输入购买的量(可乐单位为罐,咖啡单位为ml)");
		int sellnum=in.nextInt();
		
		if(choise==1)
		{
			Drink mydrink=factory.CreateDrink("咖啡");
			mydrink.sell("咖啡", sellnum);
		}
		if(choise==2)
		{
			Drink mydrink=factory.CreateDrink("可乐");
			System.out.println("请输入购买的品种");
			System.out.println("1.可口可乐 2.百事可乐 3.健力宝");
			int choose=in.nextInt();
			if(choose==1)
			{
				mydrink.sell("可口可乐", sellnum);
			}
			if(choose==2)
			{
				mydrink.sell("百事可乐", sellnum);
			}
			if(choose==3)
			{
				mydrink.sell("健力宝", sellnum);
			}
		}
		

		
		
		
	}

}

总结

通过实现简单的自动售货机,理解并运用了一次工厂模式。

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值