一.基本功能:基本套餐结算和找零。使用优惠劵购买餐品结算和找零。可在一定时间段参与店内活动(自行设计或参考官网信息)。模拟打印小票的功能(写到文件中)。
二.类图:工厂方法模式:
package com.cn1;
//工厂接口
public interface KFC_I_Factory {
public I_Hamburger getHamburger();
public I_Drink getDrink();
public I_ChickenWing getChickenWing();
public double getCutOff();
}
//工厂派生套餐
public class combo1 implements KFC_I_Factory{
ChikenWing chickwing=new ChikenWing("俩个鸡翅");
Hamburger hamburger=new Hamburger("香辣鸡腿堡");
Drink drink=new Drink("橙汁");
//重写获得汉堡类
public I_Hamburger getHamburger() {
// TODO Auto-generated method stub
return hamburger;
}
//重写获得饮料类
public I_Drink getDrink() {
// TODO Auto-generated method stub
return drink;
}
public I_ChickenWing getChickenWing(){
// TODO Auto-generated method stub
return chickwing;
}
//重写获得优惠
public double getCutOff() {
// TODO Auto-generated method stub
double money=hamburger.getPrice()+drink.getPrice()+2*chickwing.getPrice();
return money-3;
}
}
//派生工厂套餐2
public class combo2 implements KFC_I_Factory{
ChikenWing chickwing=new ChikenWing("四个鸡翅");
Hamburger hamburger=new Hamburger("奥尔良鸡腿堡");
Drink drink=new Drink("牛奶");
public I_Hamburger getHamburger() {
/ / TODO Auto-generated method stub
return hamburger;
}
public I_Drink getDrink() {
// TODO Auto-generated method stub
return drink;
}
public I_ChickenWing getChickenWing(){
// TODO Auto-generated method stub
return chickwing;
}
public double getCutOff() {
// TODO Auto-generated method stub
double money=hamburger.getPrice()+drink.getPrice()+4*chickwing.getPrice();
return money*0.9;
}
//鸡翅接口
public interface I_ChickenWing {
public void createChickenWing();
public int getPrice();
}
//饮料接口
public interface I_Drink {
public void createDrink();
public int getPrice();
}
//汉堡接口
public interface I_Hamburger {
public void createHamburger();
public int getPrice();
}
//汉堡类
public class Hamburger implements I_Hamburger{
private String name;
public Hamburger(String name){
super();
this.name=name;
}
public void createHamburger() {
// TODO Auto-generated method stub
System.out.println(name);
}
public int getPrice() {
// TODO Auto-generated method stub
return 20;
}
}
//鸡翅类
public class ChikenWing implements I_ChickenWing{
private String name;
public ChikenWing(String name) { /
/ TODO Auto-generated constructor stub
super();
this.name=name;
}
public void createChickenWing() {
// TODO Auto-generated method stub
System.out.println(name);
}
public int getPrice() {
// TODO Auto-generated method stub
return 5;
} }
public class Drink implements I_Drink{
private String name;
public Drink(String name){
super();
this.name=name;
}
public void createDrink() {
// TODO Auto-generated method stub System.out.println(name);
}
public int getPrice() {
// TODO Auto-generated method stub
return 10;
} }
//测试类
import java.util.Scanner;
public class Test {
public static void main(String[] args) { Scanner scanner=new Scanner(System.in);
System.out.println("请选择套餐:");
int s=scanner.nextInt();
KFC_I_Factory combo1=new combo1(); KFC_I_Factory combo2=new combo2();
if(s==1) {
System.out.println("套餐一:"); combo1.getChickenWing().createChickenWing(); combo1.getDrink().createDrink();
combo1.getHamburger().createHamburger(); System.out.println(combo1.getCutOff());
System.out.println("请支付您的用餐费用");
double d=scanner.nextDouble();
double money=d-combo1.getCutOff(); System.out.println("给您找零"+money);
System.out.println("欢迎下次光临");
}
if(s==2) {
System.out.println("套餐二:"); combo2.getChickenWing().createChickenWing(); combo2.getDrink().createDrink();
combo2.getHamburger().createHamburger(); System.out.println(combo2.getCutOff());
System.out.println("请支付您的用餐费用");
double d=scanner.nextDouble();
double money=d-combo2.getCutOff(); System.out.println("给您找零"+money);
System.out.println("欢迎下次光临");
}
}}