diff --git a/DesignPatternProject/DesignPatternProject.iml b/DesignPatternProject/DesignPatternProject.iml index c90834f..e7b98ac 100644 --- a/DesignPatternProject/DesignPatternProject.iml +++ b/DesignPatternProject/DesignPatternProject.iml @@ -5,7 +5,7 @@ - + \ No newline at end of file diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/Coupon.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/Coupon.java new file mode 100644 index 0000000..6e62354 --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/Coupon.java @@ -0,0 +1,17 @@ +package edu.tongji.designpattern.ClassDesign.Business.AdaptorDemo; +/* + * created by zhujitao + * 2019/10/22 + * A类优惠卷,可以享受6.8折优惠 + * */ + +public interface Coupon { + + final String type = ""; + final double discountPercentage = 0; + + public double returnDiscount(); + + public String getType(); + +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/CouponA.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/CouponA.java new file mode 100644 index 0000000..2b57bc9 --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/CouponA.java @@ -0,0 +1,23 @@ +package edu.tongji.designpattern.ClassDesign.Business.AdaptorDemo; + +/* + * created by zhujitao + * 2019/10/22 + * A类优惠卷,可以享受6.8折优惠 + * */ + +public class CouponA implements Coupon { + + final String type = "A"; + final double discountPercentage = 0.68; + + @Override + public String getType() { + return type; + } + + @Override + public double returnDiscount() { + return discountPercentage; + } +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/CouponB.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/CouponB.java new file mode 100644 index 0000000..9d09197 --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/CouponB.java @@ -0,0 +1,21 @@ +package edu.tongji.designpattern.ClassDesign.Business.AdaptorDemo;/* + * created by zhujitao + * 2019/10/22 + * B类优惠卷,可以享受8.8折优惠 + * */ + +public class CouponB implements Coupon { + + final String type = "B"; + final double discountPercentage = 0.88; + + @Override + public String getType() { + return type; + } + + @Override + public double returnDiscount() { + return discountPercentage; + } +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/CouponC.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/CouponC.java new file mode 100644 index 0000000..076e0f7 --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/CouponC.java @@ -0,0 +1,21 @@ +package edu.tongji.designpattern.ClassDesign.Business.AdaptorDemo;/* +* created by zhujitao +* 2019/10/22 +* C类优惠卷,可以享受9.8折优惠 +* */ + +public class CouponC implements Coupon { + + final String type = "A"; + final double discountPercentage = 0.98; + + @Override + public String getType() { + return type; + } + + @Override + public double returnDiscount() { + return discountPercentage; + } +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/CouponN.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/CouponN.java new file mode 100644 index 0000000..64e9c17 --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/CouponN.java @@ -0,0 +1,24 @@ +package edu.tongji.designpattern.ClassDesign.Business.AdaptorDemo; + +/* + * created by zhujitao + * 2019/10/22 + * N类优惠卷,就是没有优惠卷,不享受任何优惠 + * */ + +public class CouponN implements Coupon { + + final String type = "N"; + final double discountPercentage = 0.0; + + @Override + public String getType() { + return type; + } + + @Override + public double returnDiscount() { + return discountPercentage; + } +} + diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/Discount.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/Discount.java new file mode 100644 index 0000000..5529a63 --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/Discount.java @@ -0,0 +1,11 @@ +package edu.tongji.designpattern.ClassDesign.Business.AdaptorDemo;/* + * created by zhujitao + * 2019/10/22 + * 优惠卷适配器的接口 + * */ + +public interface Discount { + + public double getDiscount(); + +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/DiscountAdapter.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/DiscountAdapter.java new file mode 100644 index 0000000..a32f79b --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/DiscountAdapter.java @@ -0,0 +1,28 @@ +package edu.tongji.designpattern.ClassDesign.Business.AdaptorDemo;/* + * created by zhujitao + * 2019/10/22 + * 优惠卷的适配器,通过输入的字符串返回不同的折扣比例 + * */ + +public class DiscountAdapter implements Discount { + + Coupon coupon = null; + private String couponType = ""; + + public DiscountAdapter(String couponType){ + this.couponType = couponType; + } + + @Override + public double getDiscount() { + if(couponType.equals("A")){ + coupon = new CouponA(); + }else if(couponType.equals("B")){ + coupon = new CouponB(); + }else if(couponType.equals("C")){ + coupon = new CouponC(); + } + return coupon.returnDiscount(); + } + +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/RealDiscount.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/RealDiscount.java new file mode 100644 index 0000000..e6a0b74 --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/RealDiscount.java @@ -0,0 +1,24 @@ +package edu.tongji.designpattern.ClassDesign.Business.AdaptorDemo; + +/* + * created by zhujitao + * 2019/10/22 + * 实际得到具体折扣的类,通过输入的字符串返回不同的折扣比例 + * */ + +public class RealDiscount implements Discount { + + DiscountAdapter discountAdapter = null; + String couponType = ""; + + + public RealDiscount(String couponType){ + this.couponType = couponType; + } + + @Override + public double getDiscount() { + discountAdapter = new DiscountAdapter(couponType); + return discountAdapter.getDiscount(); + } +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Builder/ComboBuilder.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Builder/ComboBuilder.java new file mode 100644 index 0000000..0b446af --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Builder/ComboBuilder.java @@ -0,0 +1,18 @@ +package edu.tongji.designpattern.ClassDesign.Business.Builder; + +import edu.tongji.designpattern.ClassDesign.Tools.Combo; +import edu.tongji.designpattern.ClassDesign.Tools.Dish; + + + +public abstract class ComboBuilder { + protected Combo combo=new Combo(); + public abstract void buildDishA(); + public abstract void buildDishB(); + public abstract void buildDrink(); + public abstract void buildPrice(); + public Combo getResult(){ + return combo; + } + +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Builder/ConcreteComboBuilderA.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Builder/ConcreteComboBuilderA.java new file mode 100644 index 0000000..1cd09c9 --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Builder/ConcreteComboBuilderA.java @@ -0,0 +1,23 @@ +package edu.tongji.designpattern.ClassDesign.Business.Builder; + +public class ConcreteComboBuilderA extends ComboBuilder { + @Override + public void buildDishA() { + combo.setDishA("蒸鱼"); + } + + @Override + public void buildDishB() { + combo.setDishB("生菜沙拉"); + + } + @Override + public void buildDrink() { + combo.setDrink("可乐"); + } + + @Override + public void buildPrice() { + combo.setPrice("40"); + } +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Builder/ConcreteComboBuilderB.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Builder/ConcreteComboBuilderB.java new file mode 100644 index 0000000..1b7f970 --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Builder/ConcreteComboBuilderB.java @@ -0,0 +1,23 @@ +package edu.tongji.designpattern.ClassDesign.Business.Builder; + +public class ConcreteComboBuilderB extends ComboBuilder{ + @Override + public void buildDishA() { + combo.setDishA("蒸肉"); + } + + @Override + public void buildDishB() { + combo.setDishB("番茄沙拉"); + + } + @Override + public void buildDrink() { + combo.setDrink("雪碧"); + } + + @Override + public void buildPrice() { + combo.setPrice("41"); + } +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Builder/ConcreteDishBuilder.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Builder/ConcreteDishBuilder.java deleted file mode 100644 index 6d2c73d..0000000 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Builder/ConcreteDishBuilder.java +++ /dev/null @@ -1,18 +0,0 @@ -package edu.tongji.designpattern.ClassDesign.Business.Builder; - -public class ConcreteDishBuilder extends DishBuilder{ -// @Override -// public void buildName() { -// dish.setName(""); -// } -// -// @Override -// public void buildPrice() { -// -// } -// -// @Override -// public void buildCategory() { -// -// } -} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Builder/Director.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Builder/Director.java new file mode 100644 index 0000000..7101f2a --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Builder/Director.java @@ -0,0 +1,20 @@ +package edu.tongji.designpattern.ClassDesign.Business.Builder; + +import edu.tongji.designpattern.ClassDesign.Tools.Combo; + +public class Director { + private ComboBuilder comboBuilder; + public Director(ComboBuilder comboBuilder){ + this.comboBuilder=comboBuilder; + } + + public Combo construct(){ + System.out.println("套餐内容:"); + comboBuilder.buildDishA(); + comboBuilder.buildDishB(); + comboBuilder.buildDrink(); + comboBuilder.buildPrice(); + return comboBuilder.getResult(); + } + +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Builder/DishBuilder.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Builder/DishBuilder.java deleted file mode 100644 index e304315..0000000 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Builder/DishBuilder.java +++ /dev/null @@ -1,16 +0,0 @@ -package edu.tongji.designpattern.ClassDesign.Business.Builder; - -import edu.tongji.designpattern.ClassDesign.Tools.Dish; - - - -abstract class DishBuilder { -// protected Dish dish=new Dish(); -// public abstract void buildName(); -// public abstract void buildPrice(); -// public abstract void buildCategory(); -// public Dish getResule(){ -// return dish; -// } - -} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/ChainofResponsibilityDemo/Complaint.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/ChainofResponsibilityDemo/Complaint.java new file mode 100644 index 0000000..d8fff9d --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/ChainofResponsibilityDemo/Complaint.java @@ -0,0 +1,76 @@ +package edu.tongji.designpattern.ClassDesign.Business.ChainofResponsibilityDemo; + +/* + * created by zhujitao + * 2019/10/22 + * 责任链模式里面的投诉类 + * */ + + +import edu.tongji.designpattern.ClassDesign.Person.Employee; +import edu.tongji.designpattern.ClassDesign.Person.Manager; +import edu.tongji.designpattern.ClassDesign.Person.Waiter; + +public class Complaint { + + Manager manager; + Waiter waiter; + + Employee employee; + + public int level; + + public Complaint(int level, Manager manager, Waiter waiter){ + this.level = level; + this.manager =manager; + this.waiter = waiter; + } + + //责任链模式,将投诉通过类型进行分析,如果是低级投诉就 + //使用服务员来解决,高级投诉使用经理来解决 + //假设投诉登记为1时服务员前来处理,否则的话是由经理来处理 + //最终默认投诉会被处理 + public void setCurHanlder(){ + if (level==1){ + employee = waiter; + }else { + employee = manager; + } + } + + public void settleProblem(){ + employee.settleComplaint(); + } + + public Employee getEmployee() { + return employee; + } + + public int getLevel() { + return level; + } + + public Manager getManager() { + return manager; + } + + public Waiter getWaiter() { + return waiter; + } + + public void setEmployee(Employee employee) { + this.employee = employee; + } + + public void setLevel(int level) { + this.level = level; + } + + public void setManager(Manager manager) { + this.manager = manager; + } + + public void setWaiter(Waiter waiter) { + this.waiter = waiter; + } +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/AddDishCommand.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/AddDishCommand.java index 0ee4d57..6173062 100644 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/AddDishCommand.java +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/AddDishCommand.java @@ -1,4 +1,17 @@ package edu.tongji.designpattern.ClassDesign.Business.Command; -public class AddDishCommand { +import edu.tongji.designpattern.ClassDesign.Person.Waiter; +import edu.tongji.designpattern.ClassDesign.Tools.Dish; + +public class AddDishCommand extends OrderPadCommand { + + public AddDishCommand(Waiter rec, Dish dish){ + super(rec); + this.dish = dish; + } + + @Override + public void execute() { + this.receiver.addDishForCustomer(this.dish); + } } diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/ConfirmOrderCommand.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/ConfirmOrderCommand.java index 7f968e6..5df28a5 100644 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/ConfirmOrderCommand.java +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/ConfirmOrderCommand.java @@ -1,4 +1,14 @@ package edu.tongji.designpattern.ClassDesign.Business.Command; -public class ConfirmOrderCommand { +import edu.tongji.designpattern.ClassDesign.Person.Waiter; + +public class ConfirmOrderCommand extends OrderPadCommand{ + public ConfirmOrderCommand(Waiter rec){ + super(rec); + + } + @Override + public void execute() { + this.receiver.confirmOrderForCustomer(); + } } diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/CreateOrderCommand.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/CreateOrderCommand.java index bdd6a4a..bd6796a 100644 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/CreateOrderCommand.java +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/CreateOrderCommand.java @@ -1,4 +1,15 @@ package edu.tongji.designpattern.ClassDesign.Business.Command; -public class CreateOrderCommand { +import edu.tongji.designpattern.ClassDesign.Business.OrderRecording.OrderCreateStrategy; +import edu.tongji.designpattern.ClassDesign.Order.Order; +import edu.tongji.designpattern.ClassDesign.Person.Waiter; + +public class CreateOrderCommand extends OrderPadCommand{ + public CreateOrderCommand(Waiter rec){ + super(rec); + } + @Override + public void execute() { + this.receiver.createOrderForCustomer(); + } } diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/DropDishCommand.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/DropDishCommand.java index c9fdab8..19b1987 100644 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/DropDishCommand.java +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/DropDishCommand.java @@ -1,4 +1,15 @@ package edu.tongji.designpattern.ClassDesign.Business.Command; -public class DropDishCommand { +import edu.tongji.designpattern.ClassDesign.Person.Waiter; +import edu.tongji.designpattern.ClassDesign.Tools.Dish; + +public class DropDishCommand extends OrderPadCommand{ + public DropDishCommand(Waiter rec, Dish dish){ + super(rec); + this.dish = dish; + } + @Override + public void execute() { + this.receiver.dropDishForCustomer(this.dish); + } } diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/OrderPadCommand.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/OrderPadCommand.java index 9510cbe..b29fa48 100644 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/OrderPadCommand.java +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/OrderPadCommand.java @@ -1,4 +1,17 @@ package edu.tongji.designpattern.ClassDesign.Business.Command; -public interface OrderPadCommand { +import edu.tongji.designpattern.ClassDesign.Order.Order; +import edu.tongji.designpattern.ClassDesign.Person.Waiter; +import edu.tongji.designpattern.ClassDesign.Tools.Dish; + +public abstract class OrderPadCommand { + protected Waiter receiver = null; + protected Order order = null; + protected Dish dish = null; + + public OrderPadCommand(Waiter rec){ + this.receiver = rec; + } + + public abstract void execute(); } diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/DecoratorDemo/CashierDecorator.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/DecoratorDemo/CashierDecorator.java new file mode 100644 index 0000000..34361e8 --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/DecoratorDemo/CashierDecorator.java @@ -0,0 +1,26 @@ +package edu.tongji.designpattern.ClassDesign.Business.DecoratorDemo; + +/* + * created by zhujitao + * 2019/10/22 + * 收银员类的抽象装饰类 + * */ + +import edu.tongji.designpattern.ClassDesign.Person.Cashier; + +public abstract class CashierDecorator { + + Cashier decoratedCashier; + + public CashierDecorator(Cashier decoratedCashier){ + this.decoratedCashier = decoratedCashier; + } + + public boolean settleAccount(){ + boolean flag = false; + //这里执行结账操作,结账成功返回true + decoratedCashier.settleAccount(); + return flag; + } + +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/DecoratorDemo/VIPCashierDecorator.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/DecoratorDemo/VIPCashierDecorator.java new file mode 100644 index 0000000..3ab9cce --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/DecoratorDemo/VIPCashierDecorator.java @@ -0,0 +1,45 @@ +package edu.tongji.designpattern.ClassDesign.Business.DecoratorDemo; + +/* + * created by zhujitao + * 2019/10/22 + * 收银员类的装饰类的具体的类 + * */ + +import edu.tongji.designpattern.ClassDesign.Person.Cashier; + +import java.util.Scanner; + +public class VIPCashierDecorator extends CashierDecorator { + + //初始化函数 + public VIPCashierDecorator(Cashier decoratedCashier){ + super(decoratedCashier); + } + + @Override + public boolean settleAccount() { + boolean flag = false; + flag = super.settleAccount(); + //在正常结账之后进行VIP推荐服务 + VIPApplication(); + return flag; + } + + public boolean VIPApplication(){ + boolean flag = false; + //在下面询问顾客是否办理VIP,然后执行对应的操作 + System.out.println("您现在还不是VIP用户,需要为您办理VIP专属卡吗?"); + String answer = ""; + Scanner input =new Scanner(System.in); + answer = input.next(); + if(answer.equals("Yes")){ + System.out.println("感谢您的信任,您现在已经是本店的VIP贵宾了,以后请多多支持!"); + }else { + System.out.println("期待您对本店的进一步支持!"); + } + + return flag; + } + +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Facade/BeerOpener.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Facade/BeerOpener.java new file mode 100644 index 0000000..74aed3f --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Facade/BeerOpener.java @@ -0,0 +1,9 @@ +package edu.tongji.designpattern.ClassDesign.Business.Facade; + +public class BeerOpener implements DrinkOpener { + + @Override + public void Open() { + System.out.println("class BeerOpener:method Open:服务员为您打开了百威啤酒!"); + } +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Facade/CockOpener.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Facade/CockOpener.java new file mode 100644 index 0000000..6c5d99b --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Facade/CockOpener.java @@ -0,0 +1,9 @@ +package edu.tongji.designpattern.ClassDesign.Business.Facade; + +public class CockOpener implements DrinkOpener { + + @Override + public void Open() { + System.out.println("class CockOpener:method Open:服务员为您打开了可乐!"); + } +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Facade/DarkPlumJuiceOpener.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Facade/DarkPlumJuiceOpener.java new file mode 100644 index 0000000..4cf46c0 --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Facade/DarkPlumJuiceOpener.java @@ -0,0 +1,9 @@ +package edu.tongji.designpattern.ClassDesign.Business.Facade; + +public class DarkPlumJuiceOpener implements DrinkOpener { + + @Override + public void Open() { + System.out.println("class DarkPlumJuiceOpener:method Open:服务员为您打开了酸梅汁!"); + } +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Facade/DrinkOpener.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Facade/DrinkOpener.java new file mode 100644 index 0000000..085465d --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Facade/DrinkOpener.java @@ -0,0 +1,7 @@ +package edu.tongji.designpattern.ClassDesign.Business.Facade; + +public interface DrinkOpener { + + void Open(); + +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Facade/OpenerMaker.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Facade/OpenerMaker.java new file mode 100644 index 0000000..c7ed00f --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Facade/OpenerMaker.java @@ -0,0 +1,27 @@ +package edu.tongji.designpattern.ClassDesign.Business.Facade; + +public class OpenerMaker { + private DrinkOpener beerOpener; + private DrinkOpener cockOpener; + private DrinkOpener spriteOpener; + private DrinkOpener darkPlumJuiceOpener; + public OpenerMaker(){ + beerOpener = new BeerOpener(); + cockOpener = new CockOpener(); + spriteOpener = new SpriteOpener(); + darkPlumJuiceOpener = new DarkPlumJuiceOpener(); + } + public void openBeer() { + beerOpener.Open(); + } + public void openCock() { + cockOpener.Open(); + } + public void openSprite() { + spriteOpener.Open(); + } + public void openDarkPlumJuice() { + darkPlumJuiceOpener.Open(); + } + +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Facade/SpriteOpener.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Facade/SpriteOpener.java new file mode 100644 index 0000000..f06cecc --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Facade/SpriteOpener.java @@ -0,0 +1,9 @@ +package edu.tongji.designpattern.ClassDesign.Business.Facade; + +public class SpriteOpener implements DrinkOpener { + + @Override + public void Open() { + System.out.println("class SpriteOpener:method Open:服务员为您打开了雪碧!"); + } +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Iterator/DishIterator.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Iterator/DishIterator.java index 7083ff7..e3faa29 100644 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Iterator/DishIterator.java +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Iterator/DishIterator.java @@ -1,7 +1,53 @@ package edu.tongji.designpattern.ClassDesign.Business.Iterator; +import edu.tongji.designpattern.ClassDesign.Order.Order; import edu.tongji.designpattern.ClassDesign.Tools.Dish; -public class DishIterator implements Iterator { +import java.util.List; +public class DishIterator implements MyIterator { + + private Order order = null; + private List lst = null; + private int position = 0; + + public DishIterator(Order order, List dishes){ + this.order = order; + this.lst = dishes; + } + + @Override + public boolean hasNext() { + return position < (lst.size() - 1); + } + + @Override + public Dish getNext() { + if (position < lst.size()){ + return lst.get(position++); + } + System.out.println("out of bound"); + return null; + } + + @Override + public void setPosition(int i) { + if ( (i < lst.size() - 1) && (i>=0) ){ + position = i-1; + } + else { + System.out.println("out of bound"); + } + } + + public Order getOrder(){return this.order;} + + @Override + public Dish getCurrent() { + if (lst.isEmpty() || (position>=lst.size()) || (position<0) ){ + return null; + } + else + return lst.get(position); + } } diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Iterator/Iterator.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Iterator/Iterator.java deleted file mode 100644 index 0dea273..0000000 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Iterator/Iterator.java +++ /dev/null @@ -1,5 +0,0 @@ -package edu.tongji.designpattern.ClassDesign.Business.Iterator; - -public interface Iterator { - -} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Iterator/MyIterator.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Iterator/MyIterator.java new file mode 100644 index 0000000..803edee --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Iterator/MyIterator.java @@ -0,0 +1,10 @@ +package edu.tongji.designpattern.ClassDesign.Business.Iterator; + +import java.util.*; + +public interface MyIterator { + boolean hasNext(); + T getNext(); + T getCurrent(); + void setPosition(int i); +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Iterator/OrderIterator.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Iterator/OrderIterator.java index 590f907..d158f81 100644 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Iterator/OrderIterator.java +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Iterator/OrderIterator.java @@ -1,7 +1,55 @@ package edu.tongji.designpattern.ClassDesign.Business.Iterator; import edu.tongji.designpattern.ClassDesign.Order.Order; +import edu.tongji.designpattern.ClassDesign.Order.OrderAggregate; +import edu.tongji.designpattern.ClassDesign.Tools.Dish; -public class OrderIterator implements Iterator { +import java.util.List; + +public class OrderIterator implements MyIterator { + + private OrderAggregate agg = null; + private List lst = null; + private int position = 0; + + public OrderIterator(OrderAggregate agg, List lst){ + this.agg = agg; + this.lst = lst; + } + + @Override + public boolean hasNext() { + return position < (lst.size() - 1); + } + + @Override + public Order getNext() { + if (position < lst.size()){ + return lst.get(position++); + } + System.out.println("out of bound"); + return null; + } + + @Override + public Order getCurrent() { + if (lst.isEmpty() || (position>=lst.size()) || (position<0) ){ + return null; + } + else + return lst.get(position); + } + + @Override + public void setPosition(int i) { + if ( (i < lst.size() - 1) && (i>=0) ){ + position = i-1; + } + else { + System.out.println("out of bound"); + } + } + + public OrderAggregate getAggregate(){return this.agg;} } diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/AddDishStrategy.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/AddDishStrategy.java index e61aa77..5d19962 100644 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/AddDishStrategy.java +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/AddDishStrategy.java @@ -1,4 +1,12 @@ package edu.tongji.designpattern.ClassDesign.Business.OrderRecording; -public class AddDishStrategy { +import edu.tongji.designpattern.ClassDesign.Order.Order; +import edu.tongji.designpattern.ClassDesign.Tools.Dish; + +public class AddDishStrategy implements OrderRecordingStrategy{ + @Override + public Order execute(Dish dish, Order order) { + order.addDish(dish); + return order; + } } diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/DropDishStragegy.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/DropDishStragegy.java deleted file mode 100644 index 1f39fda..0000000 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/DropDishStragegy.java +++ /dev/null @@ -1,4 +0,0 @@ -package edu.tongji.designpattern.ClassDesign.Business.OrderRecording; - -public class DropDishStragegy { -} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/DropDishStrategy.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/DropDishStrategy.java new file mode 100644 index 0000000..bd5ef41 --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/DropDishStrategy.java @@ -0,0 +1,16 @@ +package edu.tongji.designpattern.ClassDesign.Business.OrderRecording; + +import edu.tongji.designpattern.ClassDesign.Order.Order; +import edu.tongji.designpattern.ClassDesign.Tools.Dish; + +public class DropDishStrategy implements OrderRecordingStrategy{ + @Override + public Order execute(Dish dish, Order order) { + if (order.removeDish(dish.getDishID())){ + System.out.println("drop dish"+dish.getDishID()+" success"); + } + else + System.out.println("dish not found"); + return order; + } +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderConfirmStrategy.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderConfirmStrategy.java index d3b1b52..0711cf1 100644 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderConfirmStrategy.java +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderConfirmStrategy.java @@ -1,4 +1,19 @@ package edu.tongji.designpattern.ClassDesign.Business.OrderRecording; -public class OrderConfirmStrategy { +import edu.tongji.designpattern.ClassDesign.Business.Iterator.DishIterator; +import edu.tongji.designpattern.ClassDesign.Business.Iterator.OrderIterator; +import edu.tongji.designpattern.ClassDesign.Order.Order; +import edu.tongji.designpattern.ClassDesign.Tools.Dish; + +public class OrderConfirmStrategy implements OrderRecordingStrategy{ + @Override + public Order execute(Dish dish, Order order) { + DishIterator iter = (DishIterator) order.createIterator(); + while (iter.hasNext()){ + Dish item = iter.getNext(); + System.out.println("confirm dish "+item.getDishID()); + } + order.setTypeToDetermined(); + return order; + } } diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderCreateStrategy.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderCreateStrategy.java index 34fca7a..e4fe528 100644 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderCreateStrategy.java +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderCreateStrategy.java @@ -1,4 +1,11 @@ package edu.tongji.designpattern.ClassDesign.Business.OrderRecording; -public class OrderCreateStrategy { +import edu.tongji.designpattern.ClassDesign.Order.Order; +import edu.tongji.designpattern.ClassDesign.Tools.Dish; + +public class OrderCreateStrategy implements OrderRecordingStrategy{ + @Override + public Order execute(Dish dish, Order order) { + return new Order(); + } } diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderRecordingStrategy.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderRecordingStrategy.java index 4d9e3c7..86578b6 100644 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderRecordingStrategy.java +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderRecordingStrategy.java @@ -1,4 +1,8 @@ package edu.tongji.designpattern.ClassDesign.Business.OrderRecording; +import edu.tongji.designpattern.ClassDesign.Order.Order; +import edu.tongji.designpattern.ClassDesign.Tools.Dish; + public interface OrderRecordingStrategy { + Order execute(Dish dish, Order order); } diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/PrototypeMementoDemo/Item.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/PrototypeMementoDemo/Item.java new file mode 100644 index 0000000..4cee933 --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/PrototypeMementoDemo/Item.java @@ -0,0 +1,36 @@ +package edu.tongji.designpattern.ClassDesign.Business.PrototypeMementoDemo;/* + * created by zhujitao + * 2019/10/25 + * 代替food的item + * */ + +public class Item { + + private String name; + private double price; + + public Item(String name, double price){ + this.name = name; + this.price = price; + } + + + + //下面是get和set方法 + public double getPrice() { + return price; + } + + public String getName() { + return name; + } + + public void setPrice(double price) { + this.price = price; + } + + public void setName(String name) { + this.name = name; + } + +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/PrototypeMementoDemo/Memento.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/PrototypeMementoDemo/Memento.java new file mode 100644 index 0000000..725e725 --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/PrototypeMementoDemo/Memento.java @@ -0,0 +1,35 @@ +package edu.tongji.designpattern.ClassDesign.Business.PrototypeMementoDemo; + +/* + * created by zhujitao + * 2019/10/22 + * 使用单例模式去创建一个类 + * */ + + +import java.util.ArrayList; +import java.util.List; + +public class Memento { + + private List mementoList = new ArrayList(); + + + public boolean addOrderClone(OrderClone orderClone){ + boolean flag = false; + //添加操作 + mementoList.add(orderClone); + return flag; + } + + public OrderClone getOrderClone(int index){ + OrderClone orderClone = mementoList.get(index); + return orderClone; + } + + public int getSize(){ + return mementoList.size(); + } + + +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/PrototypeMementoDemo/Menu.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/PrototypeMementoDemo/Menu.java new file mode 100644 index 0000000..ea00720 --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/PrototypeMementoDemo/Menu.java @@ -0,0 +1,58 @@ +package edu.tongji.designpattern.ClassDesign.Business.PrototypeMementoDemo; + +import java.util.ArrayList; +import java.util.List; + +public class Menu { + + private static Menu instance = new Menu(); + + public static Menu getInstance() { + return instance; + } + + private List menuList=new ArrayList<>(); + + String[] foodName = {"生菜沙拉", "番茄沙拉", "黄瓜沙拉", "鱼刺身", "虾刺身", + "鱼寿司", "黄瓜寿司", "黄瓜鱼寿司", "番茄意面","肉意面","蘑菇意面","鱼虾意面", + "油炸鸡","油炸土豆","油炸土豆鸡","肉卷饼","蘑菇卷饼","鸡肉卷饼", + "肉汉堡","芝士汉堡","青菜芝士汉堡", "青菜番茄汉堡", "菠萝肉汉堡", + "芝士披萨", "芝士香肠披萨", "芝士鸡披萨", "鸡蛋煎饼", "巧克力煎饼","鸡蛋草莓煎饼", + "蜂蜜蛋糕", "巧克力蛋糕", "蜂蜜胡萝卜蛋糕", "蒸鱼", "蒸肉", "蒸胡萝卜", "蒸虾", + "香蕉奶昔", "草莓奶昔", "西瓜奶昔", "波罗奶昔", "香蕉波罗奶昔", "烤鸡肉", + "烤肉", "烤蘑菇", "烤蘑菇菠萝", "可乐", "雪碧", "百威啤酒", "酸梅汁"}; + + //对应上面的食物名称 + double[] foodPrice = { + 12, 13, 12, 22, 24, + 27, 25, 25, 22, 24, 26, 28, + 27, 25, 25, 22, 24, 26, + 28,27, 25, 25, 22, + 24, 26, 28,27, 25, 25, + 22, 24, 26, 28,27, 25, 15, + 22, 24, 26, 28,27, 25, + 25, 22, 24, 5, 6, 12, 5}; + + //初始化菜单,向里面添加菜 + private Menu() { + for(int i=0; i getMenu() { + return menuList; + } + + //展示菜单内的菜和价格 + public void showMenu(){ + for(int i=0; i itemList = new ArrayList(); + private double price = 0.0; + + //构造函数,传入的参数是Order,目的是将Order里面需要记录的数据存入OrderClone中 + public OrderClone(Order order){ + this.itemList = order.getItemList(); + this.price = order.getPrice(); + } + + //返回OrderColne的对象,将其存入备忘录中,方便记录 + @Override + public Object clone() { + Object clone = null; + try { + clone = super.clone(); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + return clone; + } + + + //下面是get和set方法 + public List getItemList() { + return itemList; + } + + public double getPrice() { + return price; + } + + public void setItemList(List itemList) { + this.itemList = itemList; + } + + public void setPrice(double price) { + this.price = price; + } + + +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/AbstractAggregate.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/AbstractAggregate.java new file mode 100644 index 0000000..9225fcc --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/AbstractAggregate.java @@ -0,0 +1,28 @@ +package edu.tongji.designpattern.ClassDesign.Order; + +import edu.tongji.designpattern.ClassDesign.Business.Iterator.MyIterator; + +import java.util.ArrayList; +import java.util.List; + +public abstract class AbstractAggregate { + protected List lst = new ArrayList(); + protected int size = 0; + + public void add(int i,T elem){ + lst.add(i,elem); + } + + public T remove(int i){ + if (lst.size() > 0) { + return lst.remove(i); + } + return null; + } + + public boolean isEmpty(){ + return lst.isEmpty(); + } + + public abstract MyIterator createIterator(); +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/Order.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/Order.java index 8c7da3b..ebe8760 100644 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/Order.java +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/Order.java @@ -1,4 +1,113 @@ package edu.tongji.designpattern.ClassDesign.Order; -public class Order extends AbstractOrder { +import edu.tongji.designpattern.ClassDesign.Business.Iterator.DishIterator; +import edu.tongji.designpattern.ClassDesign.Business.Iterator.MyIterator; +import edu.tongji.designpattern.ClassDesign.Business.PrototypeMementoDemo.Item; +import edu.tongji.designpattern.ClassDesign.Person.Employee; +import edu.tongji.designpattern.ClassDesign.Tools.Dish; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class Order extends AbstractAggregate { + private String orderID; + private Date date; + private OrderType type = OrderType.UNDETERMINED; + private List dishes = new ArrayList<>(); + private List itemList = new ArrayList(); + private List employeeList = new ArrayList(); + private double price = 0.0; + private Integer orderState; + + + //下面是get和set方法 + public double getPrice() { + return price; + } + + public void setPrice(double price) { + this.price = price; + } + + public List getEmployeeList() { + return employeeList; + } + + public List getItemList() { + return itemList; + } + + public void setEmployeeList(List employeeList) { + this.employeeList = employeeList; + } + + public void setItemList(List itemList) { + this.itemList = itemList; + } + + public String getOrderID() { + return orderID; + } + + public Date getDate(){ + return date; + } + + public OrderType getType(){ + return type; + } + + public Integer getOrderState() { + return orderState; + } + //加入notifyall函数:ruanbanyao + public void setOrderState(Integer orderState) { + this.orderState = orderState; + notifyAllEmployees(); + } + //ruan + public void addEmploy(Employee e){ + employeeList.add(e); + } + private void notifyAllEmployees() { + for (Employee employee : employeeList) { + employee.update(); + } + } + + /* + convert @undetermined-order into @order + */ + public void setTypeToDetermined(){ + this.type = OrderType.DETERMINED; + } + + + /* + add new dish to the dish array + */ + public void addDish(Dish dsh){ + dishes.add(dsh); + } + + /* + remove dish by dishID + */ + public boolean removeDish(String dishID){ + for (Dish dsh:dishes){ + if (dishID == dsh.getDishID()){ + return dishes.remove(dsh); + } + } + return false; + } + + public List getDishes(){return this.dishes;} + + + @Override + public MyIterator createIterator() { + return new DishIterator(this,dishes); + } } diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/OrderAggregate.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/OrderAggregate.java new file mode 100644 index 0000000..d274beb --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/OrderAggregate.java @@ -0,0 +1,12 @@ +package edu.tongji.designpattern.ClassDesign.Order; + +import edu.tongji.designpattern.ClassDesign.Business.Iterator.MyIterator; +import edu.tongji.designpattern.ClassDesign.Business.Iterator.OrderIterator; + +public class OrderAggregate extends AbstractAggregate { + + @Override + public MyIterator createIterator() { + return new OrderIterator(this, lst); + } +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/AbstractOrder.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/OrderType.java similarity index 50% rename from DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/AbstractOrder.java rename to DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/OrderType.java index bfb2537..d59fc37 100644 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/AbstractOrder.java +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/OrderType.java @@ -1,4 +1,5 @@ package edu.tongji.designpattern.ClassDesign.Order; -public class AbstractOrder { +public enum OrderType { + DETERMINED, UNDETERMINED } diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/UndeterminedOrder.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/UndeterminedOrder.java deleted file mode 100644 index 9443256..0000000 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/UndeterminedOrder.java +++ /dev/null @@ -1,5 +0,0 @@ -package edu.tongji.designpattern.ClassDesign.Order; - -public class UndeterminedOrder extends AbstractOrder { - -} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/BroadcastType.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/BroadcastType.java new file mode 100644 index 0000000..b8c819a --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/BroadcastType.java @@ -0,0 +1,5 @@ +package edu.tongji.designpattern.ClassDesign.Person; + +public enum BroadcastType { + MANAGER_REPORT, ALL, ALL_EMPLOYEE +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Cashier.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Cashier.java index 569c02f..3955750 100644 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Cashier.java +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Cashier.java @@ -1,14 +1,37 @@ package edu.tongji.designpattern.ClassDesign.Person; +import edu.tongji.designpattern.ClassDesign.Business.AdaptorDemo.RealDiscount; import edu.tongji.designpattern.ClassDesign.Business.AirConditionerAPI.AirConditionerAPI; +import edu.tongji.designpattern.ClassDesign.Order.Order; + +import java.text.DecimalFormat; public class Cashier extends Employee { private double temperature; - public Cashier(double temperature,AirConditionerAPI airConditionerAPI) { + Order order; + String couponType; + RealDiscount realDiscount; + + public Cashier(double temperature,AirConditionerAPI airConditionerAPI, String couponType) { super(airConditionerAPI); this.temperature=temperature; + + this.order = order; + this.couponType = couponType; + realDiscount = new RealDiscount(couponType); + } + + public void settleAccount(){ + //这里执行结账操作,结账成功返回true + if(couponType.equals("N")){ + System.out.println("您本次就餐共花费了"+order.getPrice()+"元,欢迎下次再来"); + }else { + DecimalFormat df = new DecimalFormat( "0.0"); + System.out.println("您的优惠卷是" + couponType + "类型的,可以享受" + df.format(realDiscount.getDiscount() * 10) + "折优惠。"); + System.out.println("您本次就餐原价是" + order.getPrice() + "元,折后价是" + order.getPrice() * realDiscount.getDiscount() + "元。"); + } } @Override @@ -28,7 +51,7 @@ public void settleComplaint() { } @Override - public void getMessage() { + public void getMessage(String msg) { } @@ -36,4 +59,10 @@ public void getMessage() { public void sendMessage() { } + + @Override + public void notifyChannel(BroadcastType broadcastType, String operation) { + + } + } diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Cook.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Cook.java index ce5576b..443a3d4 100644 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Cook.java +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Cook.java @@ -1,16 +1,23 @@ package edu.tongji.designpattern.ClassDesign.Person; import edu.tongji.designpattern.ClassDesign.Business.AirConditionerAPI.AirConditionerAPI; +import edu.tongji.designpattern.ClassDesign.Order.Order; public class Cook extends Employee { private double temperature; - public Cook(double temperature,AirConditionerAPI airConditionerAPI) { + //ruan + public Cook(double temperature, AirConditionerAPI airConditionerAPI, Order order) { super(airConditionerAPI); this.temperature=temperature; + this.order=order; + this.order.addEmploy(this); } - +//ruan + public Cook(){ + super(); +} @Override public void changeTmp() { System.out.println("厨师修改空调温度——"); @@ -19,6 +26,12 @@ public void changeTmp() { @Override public void update() { + if(order.getOrderState()==0) + + System.out.println("class Cook: method update:接受到新订单!厨师开始做菜"); + else + + System.out.println("class Cook: method update:订单完成!厨师等待服务员接菜"); } @@ -28,7 +41,7 @@ public void settleComplaint() { } @Override - public void getMessage() { + public void getMessage(String msg) { } @@ -36,4 +49,17 @@ public void getMessage() { public void sendMessage() { } + + @Override + protected void notifyChannel(BroadcastType broadcastType, String operation) { + try{ + if (broadcastType == BroadcastType.ALL_EMPLOYEE){ + + } + }catch (NullPointerException e){ + System.out.println(e.getMessage()); + } + } + + } diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Customer.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Customer.java index 15c9c6f..29feecc 100644 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Customer.java +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Customer.java @@ -1,5 +1,7 @@ package edu.tongji.designpattern.ClassDesign.Person; +import edu.tongji.designpattern.ClassDesign.Business.Command.*; +import edu.tongji.designpattern.ClassDesign.Tools.Dish; import edu.tongji.designpattern.ClassDesign.Business.State.CustomerState; import edu.tongji.designpattern.ClassDesign.Business.State.OrderState; @@ -7,28 +9,91 @@ import java.util.List; public class Customer { - - private String name; - private String gender; + ////<<<< + private String customerName; + private Gender customerGender; +// private int customerAge = 0; private Integer VIPORNOT;//默认1为VIP,0为非VIP + private VIPType viptype = VIPType.NONVIP; + + ////>>>>>>>> private List customers; private CustomerState customerState; private double time; //目前是传递一个时间参数,来控制顾客的状态变化 - public Customer(String name, String gender,Integer VIPORNOT){ - this.name=name; - this.gender=gender; + private OrderPadCommand myCommand; + private Waiter servedWaiter; + + public Customer(String customerName, String gender,Integer VIPORNOT){ + this.customerName=customerName; +// this.gender=gender; this.VIPORNOT=VIPORNOT; customers=new ArrayList(); } + + ////>>>> + public Customer(String name, Gender gender,VIPType VIPORNOT){ + this.customerName = name; + this.customerGender = gender; + this.viptype = VIPORNOT; + customers = new ArrayList(); + } public Customer(){ //初始化为点单状态 customerState = new OrderState(); } + public void served(Waiter wt){ + this.servedWaiter = wt; + } + + public void serviceEnd(){ + this.servedWaiter.clearOrder(); + this.servedWaiter = null; + } + + private void setMyCommand(OrderPadCommand cmd){ + if (this.servedWaiter != null) + myCommand = cmd; + else + System.out.println("ERROR: no serving waiter!"); + } + + public void setVIPType(){this.viptype = VIPType.VIP;} + public boolean isVIP(){return this.viptype == VIPType.VIP;} + private void executeCommand(){ + this.myCommand.execute(); + } + + public void addDishDemand(Dish dish){ + AddDishCommand cmd = new AddDishCommand(this.servedWaiter,dish); + this.setMyCommand(cmd); + this.myCommand.execute(); + } + + public void dropDishDemand(Dish dish){ + DropDishCommand cmd = new DropDishCommand(this.servedWaiter,dish); + this.setMyCommand(cmd); + this.myCommand.execute(); + } + + public void createOrderDemand(Dish dish){ + CreateOrderCommand cmd = new CreateOrderCommand(this.servedWaiter); + this.setMyCommand(cmd); + this.myCommand.execute(); + } + + public void confirmOrderDemand(Dish dish){ + ConfirmOrderCommand cmd = new ConfirmOrderCommand(this.servedWaiter); + this.setMyCommand(cmd); + this.myCommand.execute(); + } + + + ////>>>> public double getTime() { return time; } @@ -46,7 +111,6 @@ public void getState(){ customerState.getState(this); } - //下面函数是组合模式所需函数,用于顾客对象加入一个队列中,形成分层 //树形结构,可以铜鼓VIP与否将顾客加入不同列表中 @@ -61,6 +125,8 @@ public List getCustomers(){ return customers; } public String toString(){ - return ("顾客:[姓名:"+name+",性别:"+gender+", 是否为VIP客户"+VIPORNOT+"]"); + return ("顾客:[姓名:"+this.customerName + +",性别:"+this.customerGender+", 是否为VIP客户" + +this.viptype+"]"); } } diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Employee.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Employee.java index 976e5d7..1e89f6d 100644 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Employee.java +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Employee.java @@ -1,20 +1,25 @@ package edu.tongji.designpattern.ClassDesign.Person; +import edu.tongji.designpattern.ClassDesign.Order.OrderAggregate; +import edu.tongji.designpattern.ClassDesign.Tools.InterPhoneChannel; import edu.tongji.designpattern.ClassDesign.Order.Order; import edu.tongji.designpattern.ClassDesign.Business.AirConditionerAPI.AirConditionerAPI; -enum Gender{ - MALE, FEMALE -} public abstract class Employee { -// private AirConditionerAPI airConditionerAPI; - private Order order; - private String employeeName; - private Gender employeeGender; - private Integer employeeAge; - public String employeeID; -// public InterphoneChannel myInterphoneChannel; + protected Order order; + protected String employeeName; + protected Gender employeeGender; + protected Integer employeeAge; + protected String employeeID; + protected EmployeeTitle employeeTitle; + public InterPhoneChannel myInterphoneChannel; + + +// ////>>>> +// public Employee(String employeeID){ +// this.employeeID = employeeID; +// } protected AirConditionerAPI airConditionerAPI; @@ -22,15 +27,37 @@ public abstract class Employee { public Employee(AirConditionerAPI airConditionerAPI){ this.airConditionerAPI= airConditionerAPI; } + //ruan + public Employee() { + + } public abstract void changeTmp(); public abstract void update(); public abstract void settleComplaint(); - public abstract void getMessage(); + + //// process the massage received + public void getMessage(String msg){ + System.out.println(this.employeeID+" receive message "+msg); + } + public abstract void sendMessage(); + + public Order getOrder() { + return order; + } + + public void setOrder(Order order) { + this.order = order; + } + + public Boolean setChannel(InterPhoneChannel channel){this.myInterphoneChannel = channel; return true;} + protected abstract void notifyChannel(BroadcastType broadcastType, String operation); + public EmployeeTitle getTitle(){return this.employeeTitle;} + public String getEmployeeID(){return this.employeeID;} } diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/EmployeeTitle.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/EmployeeTitle.java new file mode 100644 index 0000000..bf0451f --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/EmployeeTitle.java @@ -0,0 +1,5 @@ +package edu.tongji.designpattern.ClassDesign.Person; + +public enum EmployeeTitle { + MANAGER, WAITER, COOK, CASHIER +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Filter/CustomerCriteria.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Filter/CustomerCriteria.java new file mode 100644 index 0000000..2e0815c --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Filter/CustomerCriteria.java @@ -0,0 +1,11 @@ +package edu.tongji.designpattern.ClassDesign.Person.Filter; + +import edu.tongji.designpattern.ClassDesign.Person.Customer; + +import java.util.List; + +public abstract class CustomerCriteria { + protected List customerList = null; + public abstract void meetCriteria(); + public abstract boolean isMetCriteria(Customer customer); +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Filter/NonVIPCustomerCriterira.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Filter/NonVIPCustomerCriterira.java new file mode 100644 index 0000000..37c9db4 --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Filter/NonVIPCustomerCriterira.java @@ -0,0 +1,24 @@ +package edu.tongji.designpattern.ClassDesign.Person.Filter; + +import edu.tongji.designpattern.ClassDesign.Person.Customer; + +import java.util.stream.Collectors; + +public class NonVIPCustomerCriterira extends CustomerCriteria { + @Override + public void meetCriteria() { + this.customerList = this.customerList.stream() + .filter(p->!p.isVIP()) + .collect(Collectors.toList()); + } + + @Override + public boolean isMetCriteria(Customer customer) { + this.meetCriteria(); + for (Customer item: this.customerList){ + if (item == customer) + return true; + } + return false; + } +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Filter/VIPCustomerCriteria.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Filter/VIPCustomerCriteria.java new file mode 100644 index 0000000..f80df50 --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Filter/VIPCustomerCriteria.java @@ -0,0 +1,24 @@ +package edu.tongji.designpattern.ClassDesign.Person.Filter; + +import edu.tongji.designpattern.ClassDesign.Person.Customer; + +import java.util.stream.Collectors; + +public class VIPCustomerCriteria extends CustomerCriteria { + @Override + public void meetCriteria() { + this.customerList = this.customerList.stream() + .filter(p->p.isVIP()) + .collect(Collectors.toList()); + } + + @Override + public boolean isMetCriteria(Customer customer) { + this.meetCriteria(); + for (Customer item: this.customerList){ + if (item == customer) + return true; + } + return false; + } +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Gender.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Gender.java new file mode 100644 index 0000000..70df641 --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Gender.java @@ -0,0 +1,5 @@ +package edu.tongji.designpattern.ClassDesign.Person; + +public enum Gender{ + MALE, FEMALE +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Manager.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Manager.java index 9b989b2..b5aa470 100644 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Manager.java +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Manager.java @@ -11,6 +11,16 @@ public Manager(double temperature,AirConditionerAPI airConditionerAPI) { this.temperature=temperature; } + //解决顾客投诉的方法 + @Override + public void settleComplaint(){ + System.out.println("您好,我是本店的经理,请问您有什么问题吗?"); + System.out.println("我已经了解了事情的经过,确实是我们的工作疏忽,我们一定会妥善解决的。"); + System.out.println("您好,我们会为您的本次就餐提供A类优惠卷,在结账时会提供6.8折优惠。"); + System.out.println("非常抱歉,同时祝您就餐愉快!"); + } + + @Override public void changeTmp() { System.out.println("大堂经理修改空调温度——"); @@ -22,18 +32,29 @@ public void update() { } + @Override - public void settleComplaint() { + public void getMessage(String msg) { } @Override - public void getMessage() { + public void sendMessage() { } + public boolean notifyWaitersToService(){ + if (this.myInterphoneChannel == null) + return false; + return this.myInterphoneChannel.notify(this, + "new service", + BroadcastType.ALL_EMPLOYEE); + } + @Override - public void sendMessage() { + protected void notifyChannel(BroadcastType broadcastType, String operation) { } + + } diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/VIPType.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/VIPType.java new file mode 100644 index 0000000..f1687e6 --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/VIPType.java @@ -0,0 +1,5 @@ +package edu.tongji.designpattern.ClassDesign.Person; + +public enum VIPType{ + VIP,NONVIP; +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Waiter.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Waiter.java index f2c817f..678c2e4 100644 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Waiter.java +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Waiter.java @@ -1,22 +1,61 @@ package edu.tongji.designpattern.ClassDesign.Person; import edu.tongji.designpattern.ClassDesign.Business.AirConditionerAPI.AirConditionerAPI; +import edu.tongji.designpattern.ClassDesign.Business.OrderRecording.AddDishStrategy; +import edu.tongji.designpattern.ClassDesign.Business.OrderRecording.OrderConfirmStrategy; +import edu.tongji.designpattern.ClassDesign.Business.OrderRecording.OrderCreateStrategy; +import edu.tongji.designpattern.ClassDesign.Business.OrderRecording.*; +import edu.tongji.designpattern.ClassDesign.Order.Order; +import edu.tongji.designpattern.ClassDesign.Tools.Dish; +////>>>> public class Waiter extends Employee { Customer customer; private double temperature; + private Order currentOrder = null; + private OrderRecordingStrategy strategy = null; + + //默认构造函数:ruan + public Waiter(){ + super(); + } public Waiter(double temperature,AirConditionerAPI airConditionerAPI) { super(airConditionerAPI); this.temperature= temperature; + this.employeeTitle = EmployeeTitle.WAITER; } public void getState(Customer customer){ System.out.println("顾客现在的状态是:"); } + +// //ruan +// public Waiter(double temperature, AirConditionerAPI airConditionerAPI) { +// super(airConditionerAPI); +// this.temperature= temperature; +// } + + @Override + public void setOrder(Order order) { + this.order=order; + this.order.addEmploy(this); + } + + + + + + @Override + public void settleComplaint() { + System.out.println("您好,请问您有什么问题吗?"); + System.out.println("好的,我们会催促后厨尽快为您准备食物,请您稍等片刻!"); + System.out.println("非常抱歉,同时祝您就餐愉快!"); + } + @Override public void changeTmp() { System.out.println("服务员修改空调温度——"); @@ -29,17 +68,52 @@ public void update() { } @Override - public void settleComplaint() { - + public void getMessage(String msg) { + System.out.println(this.employeeID+" receive "+msg); } @Override - public void getMessage() { + public void sendMessage() { } @Override - public void sendMessage() { + protected void notifyChannel(BroadcastType broadcastType, String operation) { + + } + + + public void clearOrder(){ + this.order = null; + } + + public void createOrderForCustomer(){ + OrderCreateStrategy strategy = new OrderCreateStrategy(); + this.setStrategy(strategy); + this.currentOrder = this.strategy.execute(null,null); + } + + public void confirmOrderForCustomer(){ + OrderConfirmStrategy strategy = new OrderConfirmStrategy(); + this.setStrategy(strategy); + this.currentOrder = this.strategy.execute(null,this.currentOrder); + } + + public void addDishForCustomer(Dish dish){ + AddDishStrategy strategy = new AddDishStrategy(); + this.setStrategy(strategy); + this.currentOrder = this.strategy.execute(dish,this.currentOrder); + } + public void dropDishForCustomer(Dish dish){ + DropDishStrategy strategy = new DropDishStrategy(); + this.setStrategy(strategy); + this.currentOrder = this.strategy.execute(dish,this.currentOrder); } + + private void setStrategy(OrderRecordingStrategy strategy) { + this.strategy = strategy; + } + + } diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Tools/Combo.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Tools/Combo.java new file mode 100644 index 0000000..b3ee787 --- /dev/null +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Tools/Combo.java @@ -0,0 +1,24 @@ +package edu.tongji.designpattern.ClassDesign.Tools; + +public class Combo { + private String dishA; + private String dishB; + private String drink; + private String price; + + public void setDishA(String dishA) { + System.out.println("热菜:"+dishA+" "); + } + + public void setDishB(String dishB) { + System.out.println("冷菜:"+dishB+" "); + } + + public void setDrink(String drink) { + System.out.println("饮料:"+drink+" "); + } + + public void setPrice(String price){ + System.out.println("总价:"+price+" "); + } +} diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Tools/Dish.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Tools/Dish.java index 5e37fcc..cbba7b7 100644 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Tools/Dish.java +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Tools/Dish.java @@ -1,6 +1,11 @@ package edu.tongji.designpattern.ClassDesign.Tools; public class Dish { + + private String dishID; + + public String getDishID(){return this.dishID;} + // private String name; // private Integer price; // private String category; diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Tools/InterPhoneChannel.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Tools/InterPhoneChannel.java index e3ff10d..f142211 100644 --- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Tools/InterPhoneChannel.java +++ b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Tools/InterPhoneChannel.java @@ -1,4 +1,76 @@ package edu.tongji.designpattern.ClassDesign.Tools; +import edu.tongji.designpattern.ClassDesign.Person.*; +import edu.tongji.designpattern.ClassDesign.Person.Employee; + +import java.util.ArrayList; +import java.util.List; + public class InterPhoneChannel { + private Boolean status = false; + private List onlineEmployees = new ArrayList(); + public static InterPhoneChannel instance = null; + + /* + singleton + */ + private InterPhoneChannel(List eArray){ + try{ + this.onlineEmployees = eArray; + if (eArray.isEmpty()) + throw new Exception("empty array"); + for (Employee e:eArray){ + if (!e.setChannel(this)){ + throw new Exception("set channel failure"); + } + } + }catch (Exception e){ + System.out.println(e); + return; + } + this.status = true; + } + + + public static InterPhoneChannel getInstance(List eArray){ + if (instance == null){ + instance = new InterPhoneChannel(eArray); + } + return instance; + } + + /* + notify objects + */ + public Boolean notify(Employee sender, String message, BroadcastType bctype){ + if (sender == null || this.status == false){ + System.out.println("notify failure"); + return false; + } + if (bctype == BroadcastType.ALL_EMPLOYEE){ + for (Employee e:this.onlineEmployees){ + if (e.getTitle() == EmployeeTitle.WAITER){ + /// pass message + e.getMessage(message); + } + } + } + else if (bctype == BroadcastType.MANAGER_REPORT){ + for (Employee e:this.onlineEmployees){ + if (e.getTitle() == EmployeeTitle.MANAGER){ + /// pass message + e.getMessage(message); + return true; + } + } + return false; + } + else if (bctype == BroadcastType.ALL){ + for (Employee e:this.onlineEmployees){ + /// pass message + e.getMessage(message); + } + } + return true; + } } diff --git a/DesignPatternProject/src/edu/tongji/designpattern/Main.java b/DesignPatternProject/src/edu/tongji/designpattern/Main.java index 26a332c..ed43b7f 100644 --- a/DesignPatternProject/src/edu/tongji/designpattern/Main.java +++ b/DesignPatternProject/src/edu/tongji/designpattern/Main.java @@ -1,16 +1,35 @@ package edu.tongji.designpattern; -import edu.tongji.designpattern.ClassDesign.*; + + import edu.tongji.designpattern.ClassDesign.Business.AirConditionerAPI.FloorAirConditioner; import edu.tongji.designpattern.ClassDesign.Business.AirConditionerAPI.HangingAirConditioner; +import edu.tongji.designpattern.ClassDesign.Business.Builder.ComboBuilder; +import edu.tongji.designpattern.ClassDesign.Business.Builder.ConcreteComboBuilderA; +import edu.tongji.designpattern.ClassDesign.Business.Builder.ConcreteComboBuilderB; +import edu.tongji.designpattern.ClassDesign.Business.Builder.Director; import edu.tongji.designpattern.ClassDesign.Business.MenuSource.MenuSource; import edu.tongji.designpattern.ClassDesign.Business.MenuSource.ProxyMenuSource; -import edu.tongji.designpattern.ClassDesign.Person.Customer; -import edu.tongji.designpattern.ClassDesign.Person.Employee; -import edu.tongji.designpattern.ClassDesign.Person.Manager; -import edu.tongji.designpattern.ClassDesign.Person.Waiter; +import edu.tongji.designpattern.ClassDesign.Business.PrototypeMementoDemo.Item; +import edu.tongji.designpattern.ClassDesign.Order.Order; +import edu.tongji.designpattern.ClassDesign.Person.*; +import edu.tongji.designpattern.ClassDesign.Tools.Combo; + +import java.util.ArrayList; +import java.util.List; + public class Main { + //// 合并的时候这里写单元测试,加上自己的函数 + public class Debug{ + public void eyishengTest1(){ + System.out.println("hello world"); + } + } + + /* + 我定义了一些 Enum type,修改了你们的参数,但是输出时没有改 + */ public static void main(String[] args) { @@ -38,19 +57,19 @@ public static void main(String[] args) { //test for BridgePattern //注册不同的职工来调用同一个接口API的不同实体类 - Employee waiter1 = new Waiter(24,new FloorAirConditioner()); - Employee manager = new Manager(25,new HangingAirConditioner()); - - waiter1.changeTmp(); - manager.changeTmp(); +// Employee waiter1 = new Waiter("waiter1",24,new FloorAirConditioner()); +// Employee manager = new Manager("waiter2",25,new HangingAirConditioner()); +// +// waiter1.changeTmp(); +// manager.changeTmp(); //test for CompositePattern //注册的四名顾客 - Customer customer1=new Customer("张先生","男",1); - Customer customer2=new Customer("张女士","男",1); - Customer customer3=new Customer("张先生","女",0); - Customer customer4=new Customer("张女士","女",0); + Customer customer1=new Customer("张先生", Gender.MALE,VIPType.VIP); + Customer customer2=new Customer("张女士", Gender.FEMALE,VIPType.VIP); + Customer customer3=new Customer("张先生", Gender.MALE,VIPType.NONVIP); + Customer customer4=new Customer("张女士",Gender.FEMALE,VIPType.NONVIP); //通过是否为VIP将VIP顾客和非VIP顾客加入不同的List里面 //感觉需要更好的划分方法(或者应该有判断语句来自动划分顾客种类? @@ -68,5 +87,92 @@ public static void main(String[] args) { //资源文件不需要从磁盘加载 source.show(); + +//test for BuilderPattern + ComboBuilder comboBuilder1= new ConcreteComboBuilderA(); + ComboBuilder comboBuilder2= new ConcreteComboBuilderB(); + Director director1 =new Director(comboBuilder1); + Director director2 =new Director(comboBuilder2); + Combo comboA=director1.construct(); + Combo comboB=director2.construct(); + + + ////<<<< eatamath debug +// ArrayList arr = new ArrayList<>(); +// Manager manager = new Manager("manager"); +// arr.add(manager); +// Waiter wt1 = new Waiter("waiter 1"); +// Waiter wt2 = new Waiter("waiter 2"); +// arr.add(wt1); +// arr.add(wt2); +// +// InterPhoneChannel phone = InterPhoneChannel.getInstance(arr); +// +// var res = manager.notifyWaitersToService(); +// System.out.println(res); + + + //打折的测试 + //RealDiscount realDiscount = new RealDiscount("A"); + //System.out.printf("discount = "+realDiscount.getDiscount()); + + //投诉处理的测试 +// Manager manager = Manager.getInstance(); +// Waiter waiter = new Waiter(); +// +// Complaint complaint = new Complaint(1, manager, waiter); +// complaint.setCurHanlder(); +// complaint.getEmployee().settleComplaint(); +// +// Complaint complaint1 = new Complaint(3, manager, waiter); +// complaint1.setCurHanlder(); +// complaint1.settleProblem(); + + //结账处理的测试 +// Order order = new Order(); +// order.setPrice(100.0); +// Cashier cashier = new Cashier(order, "N"); +// +// VIPCashierDecorator vipCashierDecorator = new VIPCashierDecorator(cashier); +// vipCashierDecorator.settleAccount(); + + + //原型和备忘录模式的测试 +// Order order = new Order(); +// order.setPrice(100.0); +// +// OrderClone orderClone = new OrderClone(order); +// +// OrderClone orderClone1 = (OrderClone)orderClone.clone(); +// Memento memento = new Memento(); +// memento.addOrderClone(orderClone1); +// //memento.getOrderClone(1); +// int length = memento.getSize(); +// System.out.println(memento.getOrderClone(length-1).getPrice()); + + + + //输出菜单测试 +// Menu menu = Menu.getInstance(); +// menu.showMenu(); + + //观察者模式测试 +// Order order= new Order(); +// Employee waiter2 = new Waiter(24,new FloorAirConditioner(),order); +// Employee cook2= new Cook(24,new FloorAirConditioner(),order); +// order.setOrderState(0); +// order.setOrderState(1); +// //facade测试 +// List items=new ArrayList<>(); +// items.add(new Item("可乐",20.2)); +// items.add(new Item("雪碧",20.2)); +// items.add(new Item("酸梅汁",20.2)); +// items.add(new Item("百威啤酒",20.2)); +// order.setItemList(items); +// ((Waiter) waiter2).getDrinkList(order); + } + + + } diff --git a/out/production/DesignPatternProject/META-INF/DesignPatternProject.kotlin_module b/out/production/DesignPatternProject/META-INF/DesignPatternProject.kotlin_module new file mode 100644 index 0000000..2983af7 Binary files /dev/null and b/out/production/DesignPatternProject/META-INF/DesignPatternProject.kotlin_module differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/Coupon.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/Coupon.class new file mode 100644 index 0000000..f78720a Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/Coupon.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/CouponA.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/CouponA.class new file mode 100644 index 0000000..3fad808 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/CouponA.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/CouponB.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/CouponB.class new file mode 100644 index 0000000..0eb4fcf Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/CouponB.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/CouponC.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/CouponC.class new file mode 100644 index 0000000..0d05354 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/CouponC.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/CouponN.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/CouponN.class new file mode 100644 index 0000000..e4c363f Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/CouponN.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/Discount.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/Discount.class new file mode 100644 index 0000000..99699c9 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/Discount.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/DiscountAdapter.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/DiscountAdapter.class new file mode 100644 index 0000000..9f8d781 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/DiscountAdapter.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/RealDiscount.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/RealDiscount.class new file mode 100644 index 0000000..df79855 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AdaptorDemo/RealDiscount.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AirConditionerAPI/AirConditionerAPI.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AirConditionerAPI/AirConditionerAPI.class new file mode 100644 index 0000000..7c39ee4 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AirConditionerAPI/AirConditionerAPI.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AirConditionerAPI/FloorAirConditioner.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AirConditionerAPI/FloorAirConditioner.class new file mode 100644 index 0000000..147c9f0 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AirConditionerAPI/FloorAirConditioner.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AirConditionerAPI/HangingAirConditioner.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AirConditionerAPI/HangingAirConditioner.class new file mode 100644 index 0000000..2f47add Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/AirConditionerAPI/HangingAirConditioner.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Builder/ComboBuilder.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Builder/ComboBuilder.class new file mode 100644 index 0000000..9267c07 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Builder/ComboBuilder.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Builder/ConcreteComboBuilderA.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Builder/ConcreteComboBuilderA.class new file mode 100644 index 0000000..1847a19 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Builder/ConcreteComboBuilderA.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Builder/ConcreteComboBuilderB.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Builder/ConcreteComboBuilderB.class new file mode 100644 index 0000000..3f95b55 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Builder/ConcreteComboBuilderB.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Builder/Director.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Builder/Director.class new file mode 100644 index 0000000..549943a Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Builder/Director.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/ChainofResponsibilityDemo/Complaint.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/ChainofResponsibilityDemo/Complaint.class new file mode 100644 index 0000000..24f937e Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/ChainofResponsibilityDemo/Complaint.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Command/AddDishCommand.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Command/AddDishCommand.class new file mode 100644 index 0000000..02622d9 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Command/AddDishCommand.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Command/ConfirmOrderCommand.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Command/ConfirmOrderCommand.class new file mode 100644 index 0000000..1169466 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Command/ConfirmOrderCommand.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Command/CreateOrderCommand.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Command/CreateOrderCommand.class new file mode 100644 index 0000000..1516ae8 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Command/CreateOrderCommand.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Command/DropDishCommand.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Command/DropDishCommand.class new file mode 100644 index 0000000..10f36c3 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Command/DropDishCommand.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Command/OrderPadCommand.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Command/OrderPadCommand.class new file mode 100644 index 0000000..972222b Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Command/OrderPadCommand.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/DecoratorDemo/CashierDecorator.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/DecoratorDemo/CashierDecorator.class new file mode 100644 index 0000000..21a6960 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/DecoratorDemo/CashierDecorator.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/DecoratorDemo/VIPCashierDecorator.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/DecoratorDemo/VIPCashierDecorator.class new file mode 100644 index 0000000..855508b Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/DecoratorDemo/VIPCashierDecorator.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Facade/BeerOpener.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Facade/BeerOpener.class new file mode 100644 index 0000000..518da82 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Facade/BeerOpener.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Facade/CockOpener.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Facade/CockOpener.class new file mode 100644 index 0000000..5a0b8b8 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Facade/CockOpener.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Facade/DarkPlumJuiceOpener.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Facade/DarkPlumJuiceOpener.class new file mode 100644 index 0000000..317efd3 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Facade/DarkPlumJuiceOpener.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Facade/DrinkOpener.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Facade/DrinkOpener.class new file mode 100644 index 0000000..b5045e4 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Facade/DrinkOpener.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Facade/OpenerMaker.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Facade/OpenerMaker.class new file mode 100644 index 0000000..e1580bf Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Facade/OpenerMaker.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Facade/SpriteOpener.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Facade/SpriteOpener.class new file mode 100644 index 0000000..3a7a9b7 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Facade/SpriteOpener.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Iterator/DishIterator.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Iterator/DishIterator.class new file mode 100644 index 0000000..0d7855a Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Iterator/DishIterator.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Iterator/MyIterator.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Iterator/MyIterator.class new file mode 100644 index 0000000..0d3e265 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Iterator/MyIterator.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Iterator/OrderIterator.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Iterator/OrderIterator.class new file mode 100644 index 0000000..7542c09 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/Iterator/OrderIterator.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/MenuSource/MenuSource.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/MenuSource/MenuSource.class new file mode 100644 index 0000000..5b62a76 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/MenuSource/MenuSource.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/MenuSource/ProxyMenuSource.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/MenuSource/ProxyMenuSource.class new file mode 100644 index 0000000..22d87d1 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/MenuSource/ProxyMenuSource.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/MenuSource/RealMenuSource.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/MenuSource/RealMenuSource.class new file mode 100644 index 0000000..9df97db Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/MenuSource/RealMenuSource.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/AddDishStrategy.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/AddDishStrategy.class new file mode 100644 index 0000000..b03887e Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/AddDishStrategy.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/DropDishStrategy.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/DropDishStrategy.class new file mode 100644 index 0000000..d9512bc Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/DropDishStrategy.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderConfirmStrategy.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderConfirmStrategy.class new file mode 100644 index 0000000..1762e88 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderConfirmStrategy.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderCreateStrategy.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderCreateStrategy.class new file mode 100644 index 0000000..c887a36 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderCreateStrategy.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderRecordingStrategy.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderRecordingStrategy.class new file mode 100644 index 0000000..54e0bc3 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderRecordingStrategy.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/PrototypeMementoDemo/Item.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/PrototypeMementoDemo/Item.class new file mode 100644 index 0000000..e30d653 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/PrototypeMementoDemo/Item.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/PrototypeMementoDemo/Memento.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/PrototypeMementoDemo/Memento.class new file mode 100644 index 0000000..4d78ce7 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/PrototypeMementoDemo/Memento.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/PrototypeMementoDemo/Menu.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/PrototypeMementoDemo/Menu.class new file mode 100644 index 0000000..d9b1294 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/PrototypeMementoDemo/Menu.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/PrototypeMementoDemo/OrderClone.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/PrototypeMementoDemo/OrderClone.class new file mode 100644 index 0000000..9bdf3eb Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/PrototypeMementoDemo/OrderClone.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/State/CheckOutState.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/State/CheckOutState.class new file mode 100644 index 0000000..68d812c Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/State/CheckOutState.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/State/CustomerState.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/State/CustomerState.class new file mode 100644 index 0000000..7565972 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/State/CustomerState.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/State/EatState.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/State/EatState.class new file mode 100644 index 0000000..3620d7c Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/State/EatState.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/State/LeaveState.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/State/LeaveState.class new file mode 100644 index 0000000..f157fb6 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/State/LeaveState.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/State/OrderState.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/State/OrderState.class new file mode 100644 index 0000000..60fd31d Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/State/OrderState.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/State/WaitState.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/State/WaitState.class new file mode 100644 index 0000000..d489bde Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Business/State/WaitState.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Order/AbstractAggregate.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Order/AbstractAggregate.class new file mode 100644 index 0000000..1b35745 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Order/AbstractAggregate.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Order/AbstractOrder.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Order/AbstractOrder.class deleted file mode 100644 index 87c1b19..0000000 Binary files a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Order/AbstractOrder.class and /dev/null differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Order/Order.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Order/Order.class index 10567b0..83a6e48 100644 Binary files a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Order/Order.class and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Order/Order.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Order/OrderAggregate.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Order/OrderAggregate.class new file mode 100644 index 0000000..a92930b Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Order/OrderAggregate.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Order/OrderType.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Order/OrderType.class new file mode 100644 index 0000000..d850817 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Order/OrderType.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Order/UndeterminedOrder.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Order/UndeterminedOrder.class deleted file mode 100644 index 5544722..0000000 Binary files a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Order/UndeterminedOrder.class and /dev/null differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/BroadcastType.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/BroadcastType.class new file mode 100644 index 0000000..9995ed5 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/BroadcastType.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Cashier.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Cashier.class index 2529a3b..a7da2e7 100644 Binary files a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Cashier.class and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Cashier.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Cook.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Cook.class index 577ea14..8c5e99d 100644 Binary files a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Cook.class and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Cook.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Customer.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Customer.class new file mode 100644 index 0000000..2ae50d3 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Customer.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Employee.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Employee.class index 051a07e..d61c774 100644 Binary files a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Employee.class and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Employee.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/EmployeeTitle.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/EmployeeTitle.class new file mode 100644 index 0000000..20d4cd9 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/EmployeeTitle.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Filter/CustomerCriteria.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Filter/CustomerCriteria.class new file mode 100644 index 0000000..143f224 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Filter/CustomerCriteria.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Filter/NonVIPCustomerCriterira.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Filter/NonVIPCustomerCriterira.class new file mode 100644 index 0000000..4d37ab3 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Filter/NonVIPCustomerCriterira.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Filter/VIPCustomerCriteria.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Filter/VIPCustomerCriteria.class new file mode 100644 index 0000000..59bb072 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Filter/VIPCustomerCriteria.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Gender.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Gender.class new file mode 100644 index 0000000..92f168f Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Gender.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Manager.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Manager.class index b694253..171a205 100644 Binary files a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Manager.class and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Manager.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/VIPType.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/VIPType.class new file mode 100644 index 0000000..01de71c Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/VIPType.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Waiter.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Waiter.class index d2dd9b3..d6c4289 100644 Binary files a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Waiter.class and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Waiter.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Tools/Combo.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Tools/Combo.class new file mode 100644 index 0000000..4eb6e7d Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Tools/Combo.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Tools/Dish.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Tools/Dish.class new file mode 100644 index 0000000..38562c6 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Tools/Dish.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Tools/InterPhoneChannel.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Tools/InterPhoneChannel.class new file mode 100644 index 0000000..ef978e8 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Tools/InterPhoneChannel.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Tools/Table.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Tools/Table.class new file mode 100644 index 0000000..ab53d83 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Tools/Table.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/Main$Debug.class b/out/production/DesignPatternProject/edu/tongji/designpattern/Main$Debug.class new file mode 100644 index 0000000..c21c4a2 Binary files /dev/null and b/out/production/DesignPatternProject/edu/tongji/designpattern/Main$Debug.class differ diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/Main.class b/out/production/DesignPatternProject/edu/tongji/designpattern/Main.class index adaf660..6945e13 100644 Binary files a/out/production/DesignPatternProject/edu/tongji/designpattern/Main.class and b/out/production/DesignPatternProject/edu/tongji/designpattern/Main.class differ