用简单工厂模式实现饮料自动贩卖机)
功能简介
接收用户输入的信息,选择购买的饮料。
可供选择的饮料有:咖啡和可乐。
其中,购买咖啡时可以选择:容量
购买可乐时可以选择:买可口可乐还是百事可乐还是健力宝。
能对其进行进货操作。
具体实现
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);
}
}
}
}
总结
通过实现简单的自动售货机,理解并运用了一次工厂模式。