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 extends Employee> onlineEmployees = new ArrayList();
+ public static InterPhoneChannel instance = null;
+
+ /*
+ singleton
+ */
+ private InterPhoneChannel(List extends Employee> 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 extends Employee> 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