diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..dfe0770
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,2 @@
+# Auto detect text files and perform LF normalization
+* text=auto
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 1763e15..7096c54 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,23 @@
-
+
+
+
+ /**$s${@inheritDoc}$s$*/
+
+
+ /**$n$$s$*$s$Getter$s$for$s$property$s$'${PROPERTY_NAME}'.$n$$s$*$n$$s$*$s$@return$s$Value$s$for$s$property$s$'${PROPERTY_NAME}'.$n$$s$*/
+
+
+ /**$n$$s$*$s$Setter$s$for$s$property$s$'${PROPERTY_NAME}'.$n$$s$*$n$$s$*$s$@param$s$${PARAM_NAME}$s$Value$s$to$s$set$s$for$s$property$s$'${PROPERTY_NAME}'.$n$$s$*/
+
+
+ /**$s$Constructs$s$a$s$new$s$${CLASS_NAME}.$s$*/
+
+
+ /**$s$Do$s$not$s$instantiate$s$${CLASS_NAME}.$s$*/
+
+
\ No newline at end of file
diff --git a/DesignPatternProject/.idea/.gitignore b/DesignPatternProject/.idea/.gitignore
new file mode 100644
index 0000000..0e40fe8
--- /dev/null
+++ b/DesignPatternProject/.idea/.gitignore
@@ -0,0 +1,3 @@
+
+# Default ignored files
+/workspace.xml
\ No newline at end of file
diff --git a/DesignPatternProject/.idea/DesignPatternProject.iml b/DesignPatternProject/.idea/DesignPatternProject.iml
new file mode 100644
index 0000000..d6ebd48
--- /dev/null
+++ b/DesignPatternProject/.idea/DesignPatternProject.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/DesignPatternProject/.idea/misc.xml b/DesignPatternProject/.idea/misc.xml
index 61e5329..961a88c 100644
--- a/DesignPatternProject/.idea/misc.xml
+++ b/DesignPatternProject/.idea/misc.xml
@@ -1,9 +1,23 @@
-
-
+
+
-
-
+
+
+ /**$s${@inheritDoc}$s$*/
+
+
+ /**$n$$s$*$s$Getter$s$for$s$property$s$'${PROPERTY_NAME}'.$n$$s$*$n$$s$*$s$@return$s$Value$s$for$s$property$s$'${PROPERTY_NAME}'.$n$$s$*/
+
+
+ /**$n$$s$*$s$Setter$s$for$s$property$s$'${PROPERTY_NAME}'.$n$$s$*$n$$s$*$s$@param$s$${PARAM_NAME}$s$Value$s$to$s$set$s$for$s$property$s$'${PROPERTY_NAME}'.$n$$s$*/
+
+
+ /**$s$Constructs$s$a$s$new$s$${CLASS_NAME}.$s$*/
+
+
+ /**$s$Do$s$not$s$instantiate$s$${CLASS_NAME}.$s$*/
+
\ No newline at end of file
diff --git a/DesignPatternProject/.idea/modules.xml b/DesignPatternProject/.idea/modules.xml
index 9c5cb24..2fbbd78 100644
--- a/DesignPatternProject/.idea/modules.xml
+++ b/DesignPatternProject/.idea/modules.xml
@@ -2,7 +2,7 @@
-
+
\ No newline at end of file
diff --git a/DesignPatternProject/.idea/vcs.xml b/DesignPatternProject/.idea/vcs.xml
index b2bdec2..64713b8 100644
--- a/DesignPatternProject/.idea/vcs.xml
+++ b/DesignPatternProject/.idea/vcs.xml
@@ -2,5 +2,6 @@
+
\ No newline at end of file
diff --git a/DesignPatternProject/.idea/workspace.xml b/DesignPatternProject/.idea/workspace.xml
index 0171a73..e7b70ec 100644
--- a/DesignPatternProject/.idea/workspace.xml
+++ b/DesignPatternProject/.idea/workspace.xml
@@ -1,11 +1,18 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -16,6 +23,9 @@
+
+
+
-
+
-
+
+
-
+
+
+
+
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -59,12 +84,15 @@
-
+
-
-
-
-
+
+
+
+
+
+
+
@@ -80,12 +108,16 @@
-
- 1572002587021
+
+ 1572610089233
- 1572002587021
-
+ 1572610089233
+
+
+
+
+
@@ -97,10 +129,15 @@
+
+
+
\ No newline at end of file
diff --git a/DesignPatternProject/DesignPatternProject.iml b/DesignPatternProject/DesignPattern.iml
similarity index 100%
rename from DesignPatternProject/DesignPatternProject.iml
rename to DesignPatternProject/DesignPattern.iml
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Customer/Customer.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Customer/Customer.class
new file mode 100644
index 0000000..84cd935
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Customer/Customer.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Customer/VIPType.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Customer/VIPType.class
new file mode 100644
index 0000000..cccaefb
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Customer/VIPType.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Employee/Cashier.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Employee/Cashier.class
new file mode 100644
index 0000000..9cecdbe
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Employee/Cashier.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Employee/Cook.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Employee/Cook.class
new file mode 100644
index 0000000..c1ef999
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Employee/Cook.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Employee/Employee.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Employee/Employee.class
new file mode 100644
index 0000000..2e518ba
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Employee/Employee.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Employee/EmployeeTitle.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Employee/EmployeeTitle.class
new file mode 100644
index 0000000..db9019d
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Employee/EmployeeTitle.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Employee/Gender.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Employee/Gender.class
new file mode 100644
index 0000000..acb2538
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Employee/Gender.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Employee/Manager.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Employee/Manager.class
new file mode 100644
index 0000000..9b5fb4e
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Employee/Manager.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Employee/Waiter.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Employee/Waiter.class
new file mode 100644
index 0000000..8a760fe
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Employee/Waiter.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Items/Item.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Items/Item.class
new file mode 100644
index 0000000..38038ae
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Items/Item.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Items/Memento.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Items/Memento.class
new file mode 100644
index 0000000..3166b9f
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Items/Memento.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Items/Menu.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Items/Menu.class
new file mode 100644
index 0000000..16d0f3e
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Items/Menu.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Items/OrderClone.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Items/OrderClone.class
new file mode 100644
index 0000000..30c890a
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Items/OrderClone.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Order/AbstractAggregate.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Order/AbstractAggregate.class
new file mode 100644
index 0000000..1d7901f
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Order/AbstractAggregate.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Order/Order.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Order/Order.class
new file mode 100644
index 0000000..adce2b2
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Order/Order.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Order/OrderAggregate.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Order/OrderAggregate.class
new file mode 100644
index 0000000..956ed4d
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Order/OrderAggregate.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Order/OrderType.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Order/OrderType.class
new file mode 100644
index 0000000..a608f70
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Order/OrderType.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Other/BroadcastType.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Other/BroadcastType.class
new file mode 100644
index 0000000..3242041
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Other/BroadcastType.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Other/Dish.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Other/Dish.class
new file mode 100644
index 0000000..770515b
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Other/Dish.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Other/Table.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Other/Table.class
new file mode 100644
index 0000000..02b5030
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/CommonClass/Other/Table.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/AdapterPattern/Coupon.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/AdapterPattern/Coupon.class
new file mode 100644
index 0000000..e78f83a
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/AdapterPattern/Coupon.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/AdapterPattern/CouponA.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/AdapterPattern/CouponA.class
new file mode 100644
index 0000000..ea88f55
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/AdapterPattern/CouponA.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/AdapterPattern/CouponB.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/AdapterPattern/CouponB.class
new file mode 100644
index 0000000..e5fbee2
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/AdapterPattern/CouponB.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/AdapterPattern/CouponC.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/AdapterPattern/CouponC.class
new file mode 100644
index 0000000..f9cfb71
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/AdapterPattern/CouponC.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/AdapterPattern/CouponN.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/AdapterPattern/CouponN.class
new file mode 100644
index 0000000..20ab847
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/AdapterPattern/CouponN.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/AdapterPattern/Discount.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/AdapterPattern/Discount.class
new file mode 100644
index 0000000..bdd6365
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/AdapterPattern/Discount.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/AdapterPattern/DiscountAdapter.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/AdapterPattern/DiscountAdapter.class
new file mode 100644
index 0000000..dc5e091
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/AdapterPattern/DiscountAdapter.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/AdapterPattern/RealDiscount.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/AdapterPattern/RealDiscount.class
new file mode 100644
index 0000000..8cb92fd
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/AdapterPattern/RealDiscount.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/BridgePattern/AirConditionerAPI.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/BridgePattern/AirConditionerAPI.class
new file mode 100644
index 0000000..29db050
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/BridgePattern/AirConditionerAPI.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/BridgePattern/FloorAirConditioner.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/BridgePattern/FloorAirConditioner.class
new file mode 100644
index 0000000..96b5e9d
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/BridgePattern/FloorAirConditioner.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/BridgePattern/HangingAirConditioner.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/BridgePattern/HangingAirConditioner.class
new file mode 100644
index 0000000..ada1bba
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/BridgePattern/HangingAirConditioner.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/BuilderPattern/Combo.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/BuilderPattern/Combo.class
new file mode 100644
index 0000000..559aec2
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/BuilderPattern/Combo.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/BuilderPattern/ComboBuilder.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/BuilderPattern/ComboBuilder.class
new file mode 100644
index 0000000..2dc6d69
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/BuilderPattern/ComboBuilder.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/BuilderPattern/ConcreteComboBuilderA.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/BuilderPattern/ConcreteComboBuilderA.class
new file mode 100644
index 0000000..5d5b029
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/BuilderPattern/ConcreteComboBuilderA.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/BuilderPattern/ConcreteComboBuilderB.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/BuilderPattern/ConcreteComboBuilderB.class
new file mode 100644
index 0000000..2b4285b
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/BuilderPattern/ConcreteComboBuilderB.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/BuilderPattern/Director.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/BuilderPattern/Director.class
new file mode 100644
index 0000000..289884b
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/BuilderPattern/Director.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/ChainofResponsibilityPattern/Complaint.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/ChainofResponsibilityPattern/Complaint.class
new file mode 100644
index 0000000..7719031
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/ChainofResponsibilityPattern/Complaint.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/CommandPattern/AddDishCommand.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/CommandPattern/AddDishCommand.class
new file mode 100644
index 0000000..90891aa
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/CommandPattern/AddDishCommand.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/CommandPattern/ConfirmOrderCommand.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/CommandPattern/ConfirmOrderCommand.class
new file mode 100644
index 0000000..59d8b2c
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/CommandPattern/ConfirmOrderCommand.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/CommandPattern/CreateOrderCommand.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/CommandPattern/CreateOrderCommand.class
new file mode 100644
index 0000000..d1510fc
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/CommandPattern/CreateOrderCommand.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/CommandPattern/DropDishCommand.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/CommandPattern/DropDishCommand.class
new file mode 100644
index 0000000..98cb023
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/CommandPattern/DropDishCommand.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/CommandPattern/OrderPadCommand.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/CommandPattern/OrderPadCommand.class
new file mode 100644
index 0000000..b7170ad
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/CommandPattern/OrderPadCommand.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/DecoratorPattern/CashierDecorator.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/DecoratorPattern/CashierDecorator.class
new file mode 100644
index 0000000..3f37d3a
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/DecoratorPattern/CashierDecorator.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/DecoratorPattern/VIPCashierDecorator.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/DecoratorPattern/VIPCashierDecorator.class
new file mode 100644
index 0000000..9053d44
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/DecoratorPattern/VIPCashierDecorator.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FacadePattern/BeerOpener.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FacadePattern/BeerOpener.class
new file mode 100644
index 0000000..40af7df
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FacadePattern/BeerOpener.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FacadePattern/CockOpener.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FacadePattern/CockOpener.class
new file mode 100644
index 0000000..36d1228
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FacadePattern/CockOpener.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FacadePattern/DarkPlumJuiceOpener.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FacadePattern/DarkPlumJuiceOpener.class
new file mode 100644
index 0000000..ac17e7a
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FacadePattern/DarkPlumJuiceOpener.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FacadePattern/DrinkOpener.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FacadePattern/DrinkOpener.class
new file mode 100644
index 0000000..8cd8c03
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FacadePattern/DrinkOpener.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FacadePattern/OpenerMaker.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FacadePattern/OpenerMaker.class
new file mode 100644
index 0000000..79f8e56
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FacadePattern/OpenerMaker.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FacadePattern/SpriteOpener.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FacadePattern/SpriteOpener.class
new file mode 100644
index 0000000..1378b94
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FacadePattern/SpriteOpener.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FilterPattern/CustomerCriteria.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FilterPattern/CustomerCriteria.class
new file mode 100644
index 0000000..6437ec1
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FilterPattern/CustomerCriteria.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FilterPattern/NonVIPCustomerCriterira.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FilterPattern/NonVIPCustomerCriterira.class
new file mode 100644
index 0000000..e8d232c
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FilterPattern/NonVIPCustomerCriterira.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FilterPattern/VIPCustomerCriteria.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FilterPattern/VIPCustomerCriteria.class
new file mode 100644
index 0000000..39c2ed9
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/FilterPattern/VIPCustomerCriteria.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/IteratorPattern/DishIterator.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/IteratorPattern/DishIterator.class
new file mode 100644
index 0000000..f372696
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/IteratorPattern/DishIterator.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/IteratorPattern/MyIterator.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/IteratorPattern/MyIterator.class
new file mode 100644
index 0000000..3a4a617
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/IteratorPattern/MyIterator.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/IteratorPattern/OrderIterator.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/IteratorPattern/OrderIterator.class
new file mode 100644
index 0000000..0a66d26
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/IteratorPattern/OrderIterator.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/MediatorPattern/InterPhoneChannel.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/MediatorPattern/InterPhoneChannel.class
new file mode 100644
index 0000000..2e914bf
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/MediatorPattern/InterPhoneChannel.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/PrototypePattern/Memento.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/PrototypePattern/Memento.class
new file mode 100644
index 0000000..28e107d
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/PrototypePattern/Memento.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/PrototypePattern/OrderClone.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/PrototypePattern/OrderClone.class
new file mode 100644
index 0000000..9816aeb
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/PrototypePattern/OrderClone.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/ProxyPattern/MenuSource.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/ProxyPattern/MenuSource.class
new file mode 100644
index 0000000..13cd1cc
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/ProxyPattern/MenuSource.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/ProxyPattern/ProxyMenuSource.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/ProxyPattern/ProxyMenuSource.class
new file mode 100644
index 0000000..d0d6ece
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/ProxyPattern/ProxyMenuSource.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/ProxyPattern/RealMenuSource.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/ProxyPattern/RealMenuSource.class
new file mode 100644
index 0000000..8b65976
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/ProxyPattern/RealMenuSource.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StatePattern/CheckOutState.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StatePattern/CheckOutState.class
new file mode 100644
index 0000000..cf08373
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StatePattern/CheckOutState.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StatePattern/CustomerState.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StatePattern/CustomerState.class
new file mode 100644
index 0000000..9a2f5c2
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StatePattern/CustomerState.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StatePattern/EatState.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StatePattern/EatState.class
new file mode 100644
index 0000000..e836bd7
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StatePattern/EatState.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StatePattern/LeaveState.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StatePattern/LeaveState.class
new file mode 100644
index 0000000..316cbba
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StatePattern/LeaveState.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StatePattern/OrderState.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StatePattern/OrderState.class
new file mode 100644
index 0000000..7d2c9a9
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StatePattern/OrderState.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StatePattern/WaitState.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StatePattern/WaitState.class
new file mode 100644
index 0000000..fc4d7c0
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StatePattern/WaitState.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StrategyPattern/AddDishStrategy.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StrategyPattern/AddDishStrategy.class
new file mode 100644
index 0000000..2cd1771
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StrategyPattern/AddDishStrategy.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StrategyPattern/DropDishStrategy.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StrategyPattern/DropDishStrategy.class
new file mode 100644
index 0000000..3448f82
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StrategyPattern/DropDishStrategy.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StrategyPattern/OrderConfirmStrategy.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StrategyPattern/OrderConfirmStrategy.class
new file mode 100644
index 0000000..45d7cf9
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StrategyPattern/OrderConfirmStrategy.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StrategyPattern/OrderCreateStrategy.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StrategyPattern/OrderCreateStrategy.class
new file mode 100644
index 0000000..0610eb8
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StrategyPattern/OrderCreateStrategy.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StrategyPattern/OrderRecordingStrategy.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StrategyPattern/OrderRecordingStrategy.class
new file mode 100644
index 0000000..4b4a5a4
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/DevideByPattern/StrategyPattern/OrderRecordingStrategy.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/Main$Debug$Eyisheng.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/Main$Debug$Eyisheng.class
new file mode 100644
index 0000000..2095644
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/Main$Debug$Eyisheng.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/Main$Debug.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/Main$Debug.class
new file mode 100644
index 0000000..e32f5af
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/Main$Debug.class differ
diff --git a/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/Main.class b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/Main.class
new file mode 100644
index 0000000..c0a3b73
Binary files /dev/null and b/DesignPatternProject/out/production/DesignPattern/edu/tongji/designpattern/Main.class differ
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/AddDishCommand.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/AddDishCommand.java
deleted file mode 100644
index 0ee4d57..0000000
--- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/AddDishCommand.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package edu.tongji.designpattern.ClassDesign.Business.Command;
-
-public class AddDishCommand {
-}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/ConfirmOrderCommand.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/ConfirmOrderCommand.java
deleted file mode 100644
index 7f968e6..0000000
--- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/ConfirmOrderCommand.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package edu.tongji.designpattern.ClassDesign.Business.Command;
-
-public class ConfirmOrderCommand {
-}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/CreateOrderCommand.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/CreateOrderCommand.java
deleted file mode 100644
index bdd6a4a..0000000
--- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/CreateOrderCommand.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package edu.tongji.designpattern.ClassDesign.Business.Command;
-
-public class CreateOrderCommand {
-}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/DropDishCommand.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/DropDishCommand.java
deleted file mode 100644
index c9fdab8..0000000
--- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/DropDishCommand.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package edu.tongji.designpattern.ClassDesign.Business.Command;
-
-public class DropDishCommand {
-}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/OrderPadCommand.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/OrderPadCommand.java
deleted file mode 100644
index 9510cbe..0000000
--- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Command/OrderPadCommand.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package edu.tongji.designpattern.ClassDesign.Business.Command;
-
-public interface OrderPadCommand {
-}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Iterator/DishIterator.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Iterator/DishIterator.java
deleted file mode 100644
index 7083ff7..0000000
--- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Iterator/DishIterator.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package edu.tongji.designpattern.ClassDesign.Business.Iterator;
-
-import edu.tongji.designpattern.ClassDesign.Tools.Dish;
-
-public class DishIterator implements Iterator {
-
-}
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/OrderIterator.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Iterator/OrderIterator.java
deleted file mode 100644
index 590f907..0000000
--- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/Iterator/OrderIterator.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package edu.tongji.designpattern.ClassDesign.Business.Iterator;
-
-import edu.tongji.designpattern.ClassDesign.Order.Order;
-
-public class OrderIterator implements Iterator {
-
-}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/AddDishStrategy.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/AddDishStrategy.java
deleted file mode 100644
index e61aa77..0000000
--- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/AddDishStrategy.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package edu.tongji.designpattern.ClassDesign.Business.OrderRecording;
-
-public class AddDishStrategy {
-}
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/OrderConfirmStrategy.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderConfirmStrategy.java
deleted file mode 100644
index d3b1b52..0000000
--- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderConfirmStrategy.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package edu.tongji.designpattern.ClassDesign.Business.OrderRecording;
-
-public class OrderConfirmStrategy {
-}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderCreateStrategy.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderCreateStrategy.java
deleted file mode 100644
index 34fca7a..0000000
--- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderCreateStrategy.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package edu.tongji.designpattern.ClassDesign.Business.OrderRecording;
-
-public class OrderCreateStrategy {
-}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderRecordingStrategy.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderRecordingStrategy.java
deleted file mode 100644
index 4d9e3c7..0000000
--- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Business/OrderRecording/OrderRecordingStrategy.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package edu.tongji.designpattern.ClassDesign.Business.OrderRecording;
-
-public interface OrderRecordingStrategy {
-}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/AbstractOrder.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/AbstractOrder.java
deleted file mode 100644
index bfb2537..0000000
--- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/AbstractOrder.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package edu.tongji.designpattern.ClassDesign.Order;
-
-public class AbstractOrder {
-}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/Order.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/Order.java
deleted file mode 100644
index 8c7da3b..0000000
--- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Order/Order.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package edu.tongji.designpattern.ClassDesign.Order;
-
-public class Order extends AbstractOrder {
-}
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/Cashier.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Cashier.java
deleted file mode 100644
index 3cb7a01..0000000
--- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Cashier.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package edu.tongji.designpattern.ClassDesign.Person;
-
-public class Cashier extends Employee {
-
- @Override
- public void changeTmp() {
-
- }
-
- @Override
- public void update() {
-
- }
-
- @Override
- public void settleComplaint() {
-
- }
-
- @Override
- public void getMessage() {
-
- }
-
- @Override
- public void sendMessage() {
-
- }
-}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Cook.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Cook.java
deleted file mode 100644
index 41f155a..0000000
--- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Cook.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package edu.tongji.designpattern.ClassDesign.Person;
-
-public class Cook extends Employee {
-
- @Override
- public void changeTmp() {
-
- }
-
- @Override
- public void update() {
-
- }
-
- @Override
- public void settleComplaint() {
-
- }
-
- @Override
- public void getMessage() {
-
- }
-
- @Override
- public void sendMessage() {
-
- }
-}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Customer.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Customer.java
deleted file mode 100644
index 33cdcea..0000000
--- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Customer.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package edu.tongji.designpattern.ClassDesign.Person;
-
-public class Customer {
-}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Employee.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Employee.java
deleted file mode 100644
index dbeb360..0000000
--- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Employee.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package edu.tongji.designpattern.ClassDesign.Person;
-
-import edu.tongji.designpattern.ClassDesign.Order.Order;
-
-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;
-
- public abstract void changeTmp();
- public abstract void update();
- public abstract void settleComplaint();
- public abstract void getMessage();
- public abstract void sendMessage();
-
-}
-
-
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Manager.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Manager.java
deleted file mode 100644
index 1bc9689..0000000
--- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Manager.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package edu.tongji.designpattern.ClassDesign.Person;
-
-public class Manager extends Employee {
- @Override
- public void changeTmp() {
-
- }
-
- @Override
- public void update() {
-
- }
-
- @Override
- public void settleComplaint() {
-
- }
-
- @Override
- public void getMessage() {
-
- }
-
- @Override
- public void sendMessage() {
-
- }
-}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Waiter.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Waiter.java
deleted file mode 100644
index 2bed58d..0000000
--- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Person/Waiter.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package edu.tongji.designpattern.ClassDesign.Person;
-
-public class Waiter extends Employee {
-
- @Override
- public void changeTmp() {
-
- }
-
- @Override
- public void update() {
-
- }
-
- @Override
- public void settleComplaint() {
-
- }
-
- @Override
- public void getMessage() {
-
- }
-
- @Override
- public void sendMessage() {
-
- }
-}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Tools/Dish.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Tools/Dish.java
deleted file mode 100644
index cc853b3..0000000
--- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Tools/Dish.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package edu.tongji.designpattern.ClassDesign.Tools;
-
-public class Dish {
-
-}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Tools/InterPhoneChannel.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Tools/InterPhoneChannel.java
deleted file mode 100644
index e3ff10d..0000000
--- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Tools/InterPhoneChannel.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package edu.tongji.designpattern.ClassDesign.Tools;
-
-public class InterPhoneChannel {
-}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Tools/Table.java b/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Tools/Table.java
deleted file mode 100644
index c93b774..0000000
--- a/DesignPatternProject/src/edu/tongji/designpattern/ClassDesign/Tools/Table.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package edu.tongji.designpattern.ClassDesign.Tools;
-
-public class Table {
-}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Customer/Customer.java b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Customer/Customer.java
new file mode 100644
index 0000000..4ad587e
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Customer/Customer.java
@@ -0,0 +1,204 @@
+package edu.tongji.designpattern.CommonClass.Customer;
+
+
+import edu.tongji.designpattern.CommonClass.Employee.Gender;
+import edu.tongji.designpattern.CommonClass.Employee.Waiter;
+import edu.tongji.designpattern.CommonClass.Other.Dish;
+import edu.tongji.designpattern.DevideByPattern.CommandPattern.*;
+import edu.tongji.designpattern.DevideByPattern.StatePattern.CustomerState;
+import edu.tongji.designpattern.DevideByPattern.StatePattern.OrderState;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Customer {
+ ////<<<<
+ private String customerName;
+ private Gender customerGender;
+ private VIPType viptype = VIPType.NONVIP;
+ private List customers;
+ private CustomerState customerState;
+ private double time; //目前是传递一个时间参数,来控制顾客的状态变化
+ private OrderPadCommand myCommand;
+ private Waiter servedWaiter;
+
+
+
+ /**
+ * @description: 用于状态模式
+ * 在构造函数中将顾客状态定义为等待状态
+ * @Param:
+ * @return:
+ * @author: Cheng
+ **/
+ public Customer(){
+ customerState = new OrderState();
+ }
+
+ /**
+ * @description: 带参构造函数,实现组合模式
+ * 每次生成顾客对象的时候生成一个List来存放顾客
+ * VIP和非VIP顾客作为树的两个叶子节点
+ * @Param:
+ * @return:
+ * @author: Cheng
+ **/
+ public Customer(String name, Gender gender, VIPType VIPORNOT){
+ this.customerName = name;
+ this.customerGender = gender;
+ this.viptype = VIPORNOT;
+ customers = new ArrayList();
+ }
+
+ /**
+ * @description: 用于状态模式
+ * 顾客获取一个参数(目前设为时间)
+ * 以此来判断顾客的状态
+ * @Param:
+ * @return:
+ * @author: Cheng
+ **/
+ public double getTime() {
+ return time;
+ }
+
+ /**
+ * @description: 用于状态模式
+ * 给顾客传递预设参数(目前设为时间)
+ * 用于状态判断
+ * @Param: double time
+ * @return:
+ * @author: Cheng
+ **/
+ public void setTime(double time) {
+ this.time = time;
+ }
+
+ /**
+ * @description: 用于状态模式
+ * 将顾客的状态初始化为点单状态
+ * @Param: CustomerState customerState
+ * @return:
+ * @author: Cheng
+ **/
+ public void setState(CustomerState customerState){
+ this.customerState= customerState;
+ }
+
+ /**
+ * @description: 用于状态模式
+ * 获取顾客的状态
+ * @Param:
+ * @return:
+ * @author: Cheng
+ **/
+ public void getState(){
+ customerState.getState(this);
+ }
+
+
+
+ /**
+ * @description: 用于组合模式
+ * 对一个List执行add操作
+ * @Param:
+ * @return:
+ * @author: Cheng
+ **/
+ public void add(Customer c){
+ customers.add(c);
+ }
+
+ /**
+ * @description: 用于组合模式
+ * 对一个List执行aremove操作
+ * @Param:
+ * @return:
+ * @author: Cheng
+ **/
+ public void remove(Customer c){
+ customers.remove(c);
+ }
+
+ /**
+ * @description: 用于组合模式
+ * 生成一个顾客的List
+ * @Param:
+ * @return:
+ * @author: Cheng
+ **/
+ public List getCustomers(){
+ return customers;
+ }
+
+ /**
+ * @description: 用于组合模式
+ * 输出顾客的信息
+ * @Param:
+ * @return:
+ * @author: Cheng
+ **/
+ public String toString(){
+ return ("顾客:[姓名:"+this.customerName
+ +",性别:"+this.customerGender+", 是否为VIP客户"
+ +this.viptype+"]");
+ }
+
+
+
+
+ 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();
+ }
+
+
+ ////>>>>
+
+ //下面函数是组合模式所需函数,用于顾客对象加入一个队列中,形成分层
+ //树形结构,可以铜鼓VIP与否将顾客加入不同列表中
+
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Customer/VIPType.java b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Customer/VIPType.java
new file mode 100644
index 0000000..ea8bddd
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Customer/VIPType.java
@@ -0,0 +1,9 @@
+package edu.tongji.designpattern.CommonClass.Customer;
+
+/**
+ * @author steve
+ * @description customer VIP or Non-VIP
+ */
+public enum VIPType{
+ VIP,NONVIP;
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Employee/Cashier.java b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Employee/Cashier.java
new file mode 100644
index 0000000..3ee27d9
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Employee/Cashier.java
@@ -0,0 +1,80 @@
+package edu.tongji.designpattern.CommonClass.Employee;
+
+
+import edu.tongji.designpattern.CommonClass.Other.BroadcastType;
+import edu.tongji.designpattern.DevideByPattern.AdapterPattern.RealDiscount;
+import edu.tongji.designpattern.DevideByPattern.BridgePattern.AirConditionerAPI;
+
+import java.text.DecimalFormat;
+
+public class Cashier extends Employee {
+
+ private double temperature;
+
+
+ //当前订单所使用的优惠卷
+ String couponType;
+ //适配器模式使用的类
+ RealDiscount realDiscount;
+
+ /**
+ * @description: 构造函数,除去父类参数,还有温度参数temperature
+ * @Param:
+ * @return:
+ * @author: Cheng
+ **/
+ public Cashier(double temperature, String employeeID, EmployeeTitle employeeTitle, AirConditionerAPI airConditionerAPI, String couponType) {
+ super();
+ this.temperature=temperature;
+ this.employeeTitle=employeeTitle.CASHIER;
+ this.couponType = couponType;
+ realDiscount = new RealDiscount(couponType);
+ }
+
+ //收银员处理订单的函数,使用了适配器模式,zhujitao
+ public void settleAccount(){
+ //这里执行结账操作,结账成功返回true
+ if(couponType.equals("N")){
+ System.out.println("您本次就餐共花费了"+getOrder().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() + "元。");
+ }
+ }
+
+ /**
+ * @description: 用于实现桥接模式
+ * 重写的改变空调温度函数
+ * 不支持Cashier操作
+ * @Param:
+ * @return:
+ * @author: Cheng
+ **/
+ @Override
+ public void changeTemperature() {
+ }
+
+ @Override
+ public void update() {
+
+ }
+
+ @Override
+ public void settleComplaint() {
+
+ }
+
+ @Override
+ public void getMessage(String msg) {
+
+ }
+
+
+
+ @Override
+ public void notifyChannel(BroadcastType broadcastType, String operation) {
+
+ }
+
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Employee/Cook.java b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Employee/Cook.java
new file mode 100644
index 0000000..a31ee1f
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Employee/Cook.java
@@ -0,0 +1,103 @@
+package edu.tongji.designpattern.CommonClass.Employee;
+
+
+import edu.tongji.designpattern.CommonClass.Other.BroadcastType;
+import edu.tongji.designpattern.CommonClass.Order.Order;
+import edu.tongji.designpattern.DevideByPattern.BridgePattern.AirConditionerAPI;
+
+public class Cook extends Employee {
+
+ private double temperature;
+
+ /**
+ * @description: 构造函数,除去父类参数,还有温度参数temperature
+ * @Param:
+ * @return:
+ * @author: Cheng
+ **/
+ public Cook(double temperature, String employeeID, EmployeeTitle employeeTitle, AirConditionerAPI airConditionerAPI, Order order) {
+ super();
+ this.temperature=temperature;
+ this.employeeTitle=employeeTitle.COOK;
+ }
+
+ /**
+ * @author ruanby
+ * @date 11/2
+ * @return null
+ * @function 厨师的默认构造函数
+ */
+ public Cook(){
+ super();
+ }
+
+
+
+ /**
+ * @description: 用于实现桥接模式
+ * 重写的改变空调温度函数
+ * 不支持Cook操作
+ * @Param:
+ * @return:
+ * @author: Cheng
+ **/
+ @Override
+ public void changeTemperature() {
+ }
+
+
+ /**
+ * @author ruanby
+ * @date 11/2
+ * @return null
+ * @function 将order参数从厨师的构造函数中分离,订单创建后,将厨师加入订单的通知列表中
+ */
+ @Override
+ public void setOrder(Order order) {
+ this.order=order;
+ this.order.addEmploy(this);
+ }
+
+
+ /**
+ * @author ruanby
+ * @date 11/2
+ * @return null
+ * @function 订单状态改变后,更新厨师的行为:接受到新订单,厨师开始做菜;订单完成,厨师等待服务员接菜
+ */
+ @Override
+ public void update() {
+ if(order.getOrderState()==0)
+
+ System.out.println("class Cook: method update:接受到新订单!厨师开始做菜");
+ else
+
+ System.out.println("class Cook: method update:订单完成!厨师等待服务员接菜");
+
+ }
+
+ @Override
+ public void settleComplaint() {
+
+ }
+
+ @Override
+ public void getMessage(String msg) {
+
+ }
+
+
+
+ @Override
+ protected void notifyChannel(BroadcastType broadcastType, String operation) {
+ try{
+ if (broadcastType == BroadcastType.ALL_WAITER){
+
+ }
+ }catch (NullPointerException e){
+ System.out.println(e.getMessage());
+ }
+ }
+
+
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Employee/Employee.java b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Employee/Employee.java
new file mode 100644
index 0000000..a1a0e94
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Employee/Employee.java
@@ -0,0 +1,98 @@
+package edu.tongji.designpattern.CommonClass.Employee;
+
+
+import edu.tongji.designpattern.CommonClass.Other.BroadcastType;
+import edu.tongji.designpattern.DevideByPattern.MediatorPattern.InterPhoneChannel;
+import edu.tongji.designpattern.CommonClass.Order.Order;
+import edu.tongji.designpattern.DevideByPattern.BridgePattern.AirConditionerAPI;
+
+
+public abstract class Employee {
+
+ protected Order order;
+ protected Gender employeeGender;
+ protected String employeeID;
+ protected EmployeeTitle employeeTitle;
+ public InterPhoneChannel myInterphoneChannel;
+
+ //属性:空调接口,protected类型
+ protected AirConditionerAPI airConditionerAPI;
+
+
+ /**
+ * @description: 抽象类Employee的构造函数,包含三个参数
+ * employeeID、employeeTitle是职工的固有属性
+ * airConditionerAPI是空调调用接口
+ * @Param:
+ * @return:
+ * @author: Cheng
+ * @created: 2019/11/2/19:05
+ **/
+ public Employee(String employeeID, EmployeeTitle employeeTitle,AirConditionerAPI airConditionerAPI){
+ this.employeeID=employeeID;
+ this.employeeTitle=employeeTitle;
+ this.airConditionerAPI=airConditionerAPI;
+ }
+
+
+
+ /**
+ * @author ruanby
+ * @date 11/2
+ * @return null
+ * @function 职工类的默认构造函数
+ */
+ public Employee() {
+
+ }
+
+
+ /**
+ * @description: 改变空调温度的函数
+ * @Param:
+ * @return:
+ * @author: Cheng
+ **/
+ public abstract void changeTemperature();
+
+
+ /**
+ * @author ruanby
+ * @date 11/2
+ * @return null
+ * @function 订单状态改变后,对服务员和厨师的工作状态进行更新,由厨师和服务员进行重写
+ */
+ public abstract void update();
+
+
+ public abstract void settleComplaint();
+
+ //// process the massage received
+ public void getMessage(String msg){
+ System.out.println(this.employeeID+" receive message "+msg);
+ }
+
+
+
+
+ public Order getOrder() {
+ return order;
+ }
+
+ /**
+ * @author ruanby
+ * @date 11/2
+ * @return null
+ * @function 职工属性中订单的set方法,会被厨师和服务员类重写
+ */
+ 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/CommonClass/Employee/EmployeeTitle.java b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Employee/EmployeeTitle.java
new file mode 100644
index 0000000..7392df5
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Employee/EmployeeTitle.java
@@ -0,0 +1,5 @@
+package edu.tongji.designpattern.CommonClass.Employee;
+
+public enum EmployeeTitle {
+ MANAGER, WAITER, COOK, CASHIER
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Employee/Gender.java b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Employee/Gender.java
new file mode 100644
index 0000000..67934e0
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Employee/Gender.java
@@ -0,0 +1,5 @@
+package edu.tongji.designpattern.CommonClass.Employee;
+
+public enum Gender {
+ MALE, FEMALE
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Employee/Manager.java b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Employee/Manager.java
new file mode 100644
index 0000000..7ae4d24
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Employee/Manager.java
@@ -0,0 +1,72 @@
+package edu.tongji.designpattern.CommonClass.Employee;
+
+
+import edu.tongji.designpattern.CommonClass.Other.BroadcastType;
+import edu.tongji.designpattern.DevideByPattern.BridgePattern.AirConditionerAPI;
+
+public class Manager extends Employee {
+
+ private double temperature;
+
+ /**
+ * @description: 构造函数,除去父类参数,还有温度参数temperature
+ * @Param:
+ * @return:
+ * @author: Cheng
+ **/
+ public Manager(double temperature, String employeeID, EmployeeTitle employeeTitle, AirConditionerAPI airConditionerAPI) {
+ super();
+ this.temperature=temperature;
+ this.employeeTitle = EmployeeTitle.MANAGER;
+ }
+
+ //经理解决顾客投诉的方法,使用的是责任链模式,zhujitao
+ @Override
+ public void settleComplaint(){
+ System.out.println("您好,我是本店的经理,请问您有什么问题吗?");
+ System.out.println("我已经了解了事情的经过,确实是我们的工作疏忽,我们一定会妥善解决的。");
+ System.out.println("您好,我们会为您的本次就餐提供A类优惠卷,在结账时会提供6.8折优惠。");
+ System.out.println("非常抱歉,同时祝您就餐愉快!");
+ }
+
+
+ /**
+ * @description: 用于实现桥接模式
+ * 重写的改变空调温度函数
+ * 支持Manager操作
+ * @Param:
+ * @return:
+ * @author: Cheng
+ **/
+ @Override
+ public void changeTemperature() {
+ System.out.println("大堂经理修改空调温度——");
+ airConditionerAPI.changeTem(temperature);
+ }
+
+ @Override
+ public void update() {
+
+ }
+
+
+ @Override
+ public void getMessage(String msg) {
+
+ }
+
+ public boolean notifyWaitersToService(){
+ if (this.myInterphoneChannel == null)
+ return false;
+ return this.myInterphoneChannel.notify(this,
+ "new service",
+ BroadcastType.ALL_WAITER);
+ }
+
+ @Override
+ protected void notifyChannel(BroadcastType broadcastType, String operation) {
+
+ }
+
+
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Employee/Waiter.java b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Employee/Waiter.java
new file mode 100644
index 0000000..0621bc8
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Employee/Waiter.java
@@ -0,0 +1,177 @@
+package edu.tongji.designpattern.CommonClass.Employee;
+
+
+import edu.tongji.designpattern.CommonClass.Other.BroadcastType;
+import edu.tongji.designpattern.CommonClass.Customer.Customer;
+import edu.tongji.designpattern.CommonClass.Items.Item;
+import edu.tongji.designpattern.CommonClass.Order.Order;
+import edu.tongji.designpattern.CommonClass.Other.Dish;
+import edu.tongji.designpattern.DevideByPattern.BridgePattern.AirConditionerAPI;
+import edu.tongji.designpattern.DevideByPattern.FacadePattern.OpenerMaker;
+import edu.tongji.designpattern.DevideByPattern.StrategyPattern.*;
+
+////>>>>
+public class Waiter extends Employee {
+
+ Customer customer;
+ private double temperature;
+ public OpenerMaker openerMaker;
+ private Order currentOrder = null;
+ private OrderRecordingStrategy strategy = null;
+
+
+ /**
+ * @author ruanby
+ * @date 11/2
+ * @return
+ * @function 服务员的默认构造函数
+ */
+ public Waiter(){
+ super();
+ }
+ /**
+ * @description: 构造函数,除去父类参数,还有温度参数temperature
+ * @Param:
+ * @return:
+ * @author: Cheng
+ **/
+ public Waiter(double temperature, String employeeID, EmployeeTitle employeeTitle,AirConditionerAPI airConditionerAPI) {
+ super();
+ this.temperature= temperature;
+ this.employeeTitle = EmployeeTitle.WAITER;
+ }
+
+ /**
+ * @description: 用于实现桥接模式
+ * 重写的改变空调温度函数
+ * 支持Waiter操作
+ * @Param:
+ * @return:
+ * @author: Cheng
+ **/
+ @Override
+ public void changeTemperature() {
+ System.out.println("服务员修改空调温度——");
+ airConditionerAPI.changeTem(temperature);
+ }
+
+
+ /**
+ * @description: 用于实现状态模式
+ * 获取顾客状态
+ * @Param:
+ * @return:
+ * @author: Cheng
+ **/
+ public void getState(Customer customer){
+ System.out.println("顾客现在的状态是:");
+ }
+
+
+
+ /**
+ * @author ruanby
+ * @date 11/2
+ * @return null
+ * @function 将order参数从服务员的构造函数中分离,订单创建后,将服务员加入订单的通知列表中
+ */
+ @Override
+ public void setOrder(Order order) {
+ this.order=order;
+ this.order.addEmploy(this);
+ }
+
+
+ //服务员处理顾客投诉的函数,使用的是责任链模式,zhujitao
+ @Override
+ public void settleComplaint() {
+ System.out.println("您好,请问您有什么问题吗?");
+ System.out.println("好的,我们会催促后厨尽快为您准备食物,请您稍等片刻!");
+ System.out.println("非常抱歉,同时祝您就餐愉快!");
+ }
+
+
+ /**
+ * @author ruanby
+ * @date 11/2
+ * @return null
+ * @function 订单状态改变后,更新服务员的行为:新订单创建,服务员等待接菜;订单完成,服务员开始上菜
+ */
+ @Override
+ public void update() {
+ if(order.getOrderState()==0)
+ System.out.println("class Waiter: method update:新订单创建!服务员等待接菜");
+ else
+ System.out.println("class Waiter: method update:订单完成!服务员开始上菜");
+ }
+
+ @Override
+ public void getMessage(String msg) {
+ System.out.println(this.employeeID+" receive "+msg);
+ }
+
+
+
+ @Override
+ protected void notifyChannel(BroadcastType broadcastType, String operation) {
+
+ }
+
+
+ /**
+ * @author ruanby
+ * @date 11/2
+ * @return null
+ * @function 服务员调用该方法,遍历当前订单,找到顾客点的饮品并为顾客打开
+ */
+ public void getDrinkList(Order order){
+ openerMaker=new OpenerMaker();
+ for (Item item : order.getItemList()) {
+ if (item.getName() == "百威啤酒" || item.getName() == "酸梅汁"|| item.getName() == "可乐"|| item.getName() == "雪碧") {
+ if (item.getName() == "百威啤酒") {
+ openerMaker.openBeer();
+ }
+ else if(item.getName() == "可乐")
+ openerMaker.openCock();
+ else if (item.getName() == "雪碧")
+ openerMaker.openSprite();
+ else
+ openerMaker .openDarkPlumJuice();
+ }
+ }
+ }
+
+ 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 item){
+ AddDishStrategy strategy = new AddDishStrategy();
+ this.setStrategy(strategy);
+ this.currentOrder = this.strategy.execute(item,this.currentOrder);
+ }
+
+ public void dropDishForCustomer(Dish item){
+ DropDishStrategy strategy = new DropDishStrategy();
+ this.setStrategy(strategy);
+ this.currentOrder = this.strategy.execute(item,this.currentOrder);
+ }
+
+ private void setStrategy(OrderRecordingStrategy strategy) {
+ this.strategy = strategy;
+ }
+
+
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Items/Item.java b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Items/Item.java
new file mode 100644
index 0000000..fa456f5
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Items/Item.java
@@ -0,0 +1,50 @@
+package edu.tongji.designpattern.CommonClass.Items;
+
+public class Item {
+ private String dishID;
+ 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;
+ }
+
+ public String getDishID(){return this.dishID;}
+
+// private String name;
+// private Integer price;
+// private String category;
+//
+//
+// public void setName(String name){
+// this.name=name;
+// }
+//
+// public void setPrice(Integer price) {
+// this.price = price;
+// }
+//
+// public void setCategory(String category) {
+// this.category = category;
+// }
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Items/Memento.java b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Items/Memento.java
new file mode 100644
index 0000000..5bedd16
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Items/Memento.java
@@ -0,0 +1,37 @@
+package edu.tongji.designpattern.CommonClass.Items;
+
+/*
+ * created by zhujitao
+ * 2019/10/22
+ * 使用单例模式去创建一个类
+ * */
+
+
+import edu.tongji.designpattern.CommonClass.Items.OrderClone;
+
+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/CommonClass/Items/Menu.java b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Items/Menu.java
new file mode 100644
index 0000000..9d73b88
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Items/Menu.java
@@ -0,0 +1,58 @@
+package edu.tongji.designpattern.CommonClass.Items;
+
+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/CommonClass/Order/AbstractAggregate.java b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Order/AbstractAggregate.java
new file mode 100644
index 0000000..e5911d8
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Order/AbstractAggregate.java
@@ -0,0 +1,55 @@
+package edu.tongji.designpattern.CommonClass.Order;
+
+
+import edu.tongji.designpattern.DevideByPattern.IteratorPattern.MyIterator;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author steve
+ * @param 元素类型
+ * @description 拥有迭代器的元素集合对象 -- 抽象基类
+ *
+ */
+public abstract class AbstractAggregate {
+ protected List lst = new ArrayList();
+ protected int size = 0;
+
+ /**
+ * @description 添加元素
+ * @param i 索引位置
+ * @param elem 元素
+ */
+ public void add(int i,T elem){
+ lst.add(i,elem);
+ }
+
+ /**
+ * @description 从集合中删除元素
+ * @param i 删除元素位置
+ * @return T 删除的元素
+ */
+ public T remove(int i){
+ if (lst.size() > 0) {
+ return lst.remove(i);
+ }
+ System.out.println("ERROR:null array delete error");
+ return null;
+ }
+
+ /**
+ * @description 判断元素集合非空
+ * @return boolean
+ */
+ public boolean isEmpty(){
+ return lst.isEmpty();
+ }
+
+ /**
+ * @description 获取迭代器对象
+ * @implNote 修改集合对象会导致之前获取的迭代器的失效!
+ * @return MyIterator 迭代器对象
+ */
+ public abstract MyIterator createIterator();
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Order/Order.java b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Order/Order.java
new file mode 100644
index 0000000..715a55b
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Order/Order.java
@@ -0,0 +1,162 @@
+package edu.tongji.designpattern.CommonClass.Order;
+
+
+import edu.tongji.designpattern.CommonClass.Employee.Employee;
+import edu.tongji.designpattern.CommonClass.Items.Item;
+import edu.tongji.designpattern.CommonClass.Other.Dish;
+import edu.tongji.designpattern.DevideByPattern.IteratorPattern.DishIterator;
+import edu.tongji.designpattern.DevideByPattern.IteratorPattern.MyIterator;
+
+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方法,zhujitao
+ public double getPrice() {
+ return price;
+ }
+
+ public void setPrice(double price) {
+ this.price = price;
+ }
+
+ /**
+ * @author ruanby
+ * @date 11/2
+ * @return List
-
+ * @function 返回当前订单中的菜品和饮品list
+ */
+ public List
- getItemList() {
+ return itemList;
+ }
+
+
+ public List getEmployeeList() {
+ return employeeList;
+ }
+
+ public void setEmployeeList(List employeeList) {
+ this.employeeList = employeeList;
+ }
+
+
+ /**
+ * @author steve
+ * @return orderID 当前的 order ID
+ */
+ public String getOrderID() {
+ return orderID;
+ }
+
+ public Date getDate(){
+ return date;
+ }
+
+ public OrderType getType(){
+ return type;
+ }
+
+ /**
+ * @author ruanby
+ * @date 11/2
+ * @return Integer
+ * @function 返回订单的状态,新订单创建或者当前订单完成,用0/1表示
+ */
+ public Integer getOrderState() {
+ return orderState;
+ }
+
+
+
+ /**
+ * @author ruanby
+ * @date 11/2
+ * @return null
+ * @function 订单状态发生变化后,通知所有的职工,更新他们的工作状态
+ */
+ private void notifyAllEmployees() {
+ for (Employee employee : employeeList) {
+ employee.update();
+ }
+ }
+
+
+ /**
+ * @author ruanby
+ * @date 11/2
+ * @return null
+ * @function 向要通知的职工list中添加职工对象
+ */
+ public void addEmploy(Employee e){
+ employeeList.add(e);
+ }
+
+
+ /**
+ * @author ruanby
+ * @date 11/2
+ * @return null
+ * @function 设置订单状态
+ */
+ public void setOrderState(Integer orderState) {
+ this.orderState = orderState;
+ notifyAllEmployees();
+ }
+
+
+ /**
+ * @author steve
+ * @description set 目前的 Order 变成 DETERMINED
+ */
+ public void setTypeToDetermined(){
+ this.type = OrderType.DETERMINED;
+ }
+
+
+ /**
+ * @author steve
+ * @param dsh 添加的菜
+ */
+ public void addDish(Dish dsh){
+ dishes.add(dsh);
+ }
+
+ /*
+ remove dish by dishID
+ */
+
+ /**
+ * @author steve
+ * @param dishID 删除的 dishID
+ * @return boolean
+ */
+ 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/CommonClass/Order/OrderAggregate.java b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Order/OrderAggregate.java
new file mode 100644
index 0000000..eae0fb5
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Order/OrderAggregate.java
@@ -0,0 +1,17 @@
+package edu.tongji.designpattern.CommonClass.Order;
+
+
+import edu.tongji.designpattern.DevideByPattern.IteratorPattern.MyIterator;
+import edu.tongji.designpattern.DevideByPattern.IteratorPattern.OrderIterator;
+
+/**
+ * @author steve
+ * @descritpion 所有 order 的集合类,可使用迭代器
+ */
+public class OrderAggregate extends AbstractAggregate {
+
+ @Override
+ public MyIterator createIterator() {
+ return new OrderIterator(this, lst);
+ }
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Order/OrderType.java b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Order/OrderType.java
new file mode 100644
index 0000000..9dac0dd
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Order/OrderType.java
@@ -0,0 +1,5 @@
+package edu.tongji.designpattern.CommonClass.Order;
+
+public enum OrderType {
+ DETERMINED, UNDETERMINED
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Other/BroadcastType.java b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Other/BroadcastType.java
new file mode 100644
index 0000000..dabb2c2
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Other/BroadcastType.java
@@ -0,0 +1,11 @@
+package edu.tongji.designpattern.CommonClass.Other;
+
+/**
+ * @author steve
+ * @description ALL 给所有人发消息
+ * MANAGER_REPORT 给经理发消息
+ * ALL_EMPLOYEE 经理给所有员工发消息
+ */
+public enum BroadcastType {
+ MANAGER_REPORT, ALL, ALL_WAITER
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Other/Dish.java b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Other/Dish.java
new file mode 100644
index 0000000..68f8234
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Other/Dish.java
@@ -0,0 +1,25 @@
+package edu.tongji.designpattern.CommonClass.Other;
+
+public class Dish {
+
+ private String dishID;
+
+ public String getDishID(){return this.dishID;}
+
+ private String name;
+ private Integer price;
+ private String category;
+
+
+ public void setName(String name){
+ this.name=name;
+ }
+
+ public void setPrice(Integer price) {
+ this.price = price;
+ }
+
+ public void setCategory(String category) {
+ this.category = category;
+ }
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Other/Table.java b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Other/Table.java
new file mode 100644
index 0000000..bc4cea4
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/CommonClass/Other/Table.java
@@ -0,0 +1,4 @@
+package edu.tongji.designpattern.CommonClass.Other;
+
+public class Table {
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/AdapterPattern/Coupon.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/AdapterPattern/Coupon.java
new file mode 100644
index 0000000..4c6fdba
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/AdapterPattern/Coupon.java
@@ -0,0 +1,20 @@
+package edu.tongji.designpattern.DevideByPattern.AdapterPattern;
+/*
+ * 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/DevideByPattern/AdapterPattern/CouponA.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/AdapterPattern/CouponA.java
new file mode 100644
index 0000000..6efd511
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/AdapterPattern/CouponA.java
@@ -0,0 +1,23 @@
+package edu.tongji.designpattern.DevideByPattern.AdapterPattern;
+
+/*
+ * 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/DevideByPattern/AdapterPattern/CouponB.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/AdapterPattern/CouponB.java
new file mode 100644
index 0000000..618edef
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/AdapterPattern/CouponB.java
@@ -0,0 +1,21 @@
+package edu.tongji.designpattern.DevideByPattern.AdapterPattern;/*
+ * 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/DevideByPattern/AdapterPattern/CouponC.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/AdapterPattern/CouponC.java
new file mode 100644
index 0000000..1501d69
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/AdapterPattern/CouponC.java
@@ -0,0 +1,21 @@
+package edu.tongji.designpattern.DevideByPattern.AdapterPattern;/*
+* 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/DevideByPattern/AdapterPattern/CouponN.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/AdapterPattern/CouponN.java
new file mode 100644
index 0000000..d2bca5f
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/AdapterPattern/CouponN.java
@@ -0,0 +1,24 @@
+package edu.tongji.designpattern.DevideByPattern.AdapterPattern;
+
+/*
+ * 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/DevideByPattern/AdapterPattern/Discount.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/AdapterPattern/Discount.java
new file mode 100644
index 0000000..342e8aa
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/AdapterPattern/Discount.java
@@ -0,0 +1,12 @@
+package edu.tongji.designpattern.DevideByPattern.AdapterPattern;/*
+ * created by zhujitao
+ * 2019/10/22
+ * 优惠卷适配器的接口
+ * */
+
+public interface Discount {
+
+ //获取折扣数值的函数,返回值为double类型
+ public double getDiscount();
+
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/AdapterPattern/DiscountAdapter.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/AdapterPattern/DiscountAdapter.java
new file mode 100644
index 0000000..2189a36
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/AdapterPattern/DiscountAdapter.java
@@ -0,0 +1,31 @@
+package edu.tongji.designpattern.DevideByPattern.AdapterPattern;
+
+/*
+ * 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/DevideByPattern/AdapterPattern/RealDiscount.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/AdapterPattern/RealDiscount.java
new file mode 100644
index 0000000..ee593a5
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/AdapterPattern/RealDiscount.java
@@ -0,0 +1,25 @@
+package edu.tongji.designpattern.DevideByPattern.AdapterPattern;
+
+/*
+ * created by zhujitao
+ * 2019/10/22
+ * 实际得到具体折扣的类,通过输入的字符串返回不同的折扣比例
+ * */
+
+public class RealDiscount implements Discount {
+
+ DiscountAdapter discountAdapter = null;
+ String couponType = "";
+
+
+ public RealDiscount(String couponType){
+ this.couponType = couponType;
+ }
+
+ //实际上获取优惠卷折扣值的函数,返回值为double
+ @Override
+ public double getDiscount() {
+ discountAdapter = new DiscountAdapter(couponType);
+ return discountAdapter.getDiscount();
+ }
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/BridgePattern/AirConditionerAPI.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/BridgePattern/AirConditionerAPI.java
new file mode 100644
index 0000000..1c80b94
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/BridgePattern/AirConditionerAPI.java
@@ -0,0 +1,17 @@
+package edu.tongji.designpattern.DevideByPattern.BridgePattern;
+
+/**
+ * @created by Cheng
+ * 空调API接口:用于桥接模式
+ * 方法:changeTem(): 改变温度的函数
+ */
+public interface AirConditionerAPI {
+
+ /**
+ * @description: 用于改变空调温度
+ * @Param: dounle temperature
+ * @return:
+ * @author: Cheng
+ **/
+ void changeTem(double temperature);
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/BridgePattern/FloorAirConditioner.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/BridgePattern/FloorAirConditioner.java
new file mode 100644
index 0000000..1cda34f
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/BridgePattern/FloorAirConditioner.java
@@ -0,0 +1,22 @@
+package edu.tongji.designpattern.DevideByPattern.BridgePattern;
+
+
+
+/**
+ * @created by Cheng
+ * 空调API实体类:表示立式空调
+ * 方法:changeTem(): 改变立式空调温度的函数
+ */
+public class FloorAirConditioner implements AirConditionerAPI {
+
+ /**
+ * @description: 用于改变立式空调温度
+ * @Param: dounle temperature
+ * @return:
+ * @author: Cheng
+ **/
+ @Override
+ public void changeTem(double temperature) {
+ System.out.println("修改立式空调温度为:"+temperature);
+ }
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/BridgePattern/HangingAirConditioner.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/BridgePattern/HangingAirConditioner.java
new file mode 100644
index 0000000..c31cd23
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/BridgePattern/HangingAirConditioner.java
@@ -0,0 +1,22 @@
+package edu.tongji.designpattern.DevideByPattern.BridgePattern;
+
+
+
+/**
+ * @created by Cheng
+ * 空调API实体类:表示挂式空调
+ * 方法:changeTem(): 改变挂失=式空调温度的函数
+ */
+public class HangingAirConditioner implements AirConditionerAPI{
+
+ /**
+ * @description: 用于改变挂式空调温度
+ * @Param: dounle temperature
+ * @return:
+ * @author: Cheng
+ **/
+ @Override
+ public void changeTem(double temperature) {
+ System.out.println("修改挂式空调温度为:"+temperature);
+ }
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/BuilderPattern/Combo.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/BuilderPattern/Combo.java
new file mode 100644
index 0000000..beacc48
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/BuilderPattern/Combo.java
@@ -0,0 +1,37 @@
+package edu.tongji.designpattern.DevideByPattern.BuilderPattern;
+
+/**
+ * @created by Cheng
+ * 套餐类:用于建造者模式
+ * 属性:表示一个套餐的“组件”,该套餐由四种组件组成
+ * 方法:用于描述组件的性质
+ */
+public class Combo {
+ private String dishA;
+ private String dishB;
+ private String drink;
+ private String price;
+
+ /**
+ * @description: “组件”信息描述函数,用来描述组件信息或性质
+ * 下面几个函数性质相同
+ * @Param: String dishA
+ * @return:
+ * @author: Cheng
+ **/
+ 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/DevideByPattern/BuilderPattern/ComboBuilder.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/BuilderPattern/ComboBuilder.java
new file mode 100644
index 0000000..ad4ce0f
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/BuilderPattern/ComboBuilder.java
@@ -0,0 +1,41 @@
+package edu.tongji.designpattern.DevideByPattern.BuilderPattern;
+
+/**
+ * @created by Cheng
+ * 套餐建造类:建造者模式的核心类
+ * 通过继承这个类可以创建不同的建造者
+ * 属性:一个protected类型的套餐类对象
+ * 方法:建造者建造“组件”的函数和一个返回套餐的方法
+ * 通过这些方法可以建造不同的组件(本例中即套餐)
+ */
+public abstract class ComboBuilder {
+ protected Combo combo=new Combo();
+
+
+ /**
+ * @description: 具体建造函数:建造第一个组件,以下函数依此类推
+ * @Param:
+ * @return:
+ * @author: Cheng
+ **/
+ public abstract void buildDishA();
+
+ public abstract void buildDishB();
+
+ public abstract void buildDrink();
+
+ public abstract void buildPrice();
+
+
+ /**
+ * @description: 返回实现的套餐,返回类型为Combo(套餐)类型
+ * 区别于以上的abstract类型的函数
+ * @Param:
+ * @return:
+ * @author: Cheng
+ **/
+ public Combo getResult(){
+ return combo;
+ }
+
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/BuilderPattern/ConcreteComboBuilderA.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/BuilderPattern/ConcreteComboBuilderA.java
new file mode 100644
index 0000000..ba84b31
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/BuilderPattern/ConcreteComboBuilderA.java
@@ -0,0 +1,31 @@
+package edu.tongji.designpattern.DevideByPattern.BuilderPattern;
+
+/**
+ * @created by Cheng
+ * 套餐建造类A: 继承自套餐建造类,是具体化的一个实例
+ * 属性:有继承自父类的combo对象
+ * 方法:具体实现建造功能
+ */
+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/DevideByPattern/BuilderPattern/ConcreteComboBuilderB.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/BuilderPattern/ConcreteComboBuilderB.java
new file mode 100644
index 0000000..67b65d9
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/BuilderPattern/ConcreteComboBuilderB.java
@@ -0,0 +1,29 @@
+package edu.tongji.designpattern.DevideByPattern.BuilderPattern;
+
+/**
+ * @created by Cheng
+ * 区别于ConcreteComboBuilderA的另一个具体建造者
+ */
+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/DevideByPattern/BuilderPattern/Director.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/BuilderPattern/Director.java
new file mode 100644
index 0000000..134c764
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/BuilderPattern/Director.java
@@ -0,0 +1,33 @@
+package edu.tongji.designpattern.DevideByPattern.BuilderPattern;
+
+/**
+ * @created by Cheng
+ * 指挥者类:调用建造者对象中的部件构造与装配方法完成复杂对象的创建
+ * 在指挥者中不涉及具体套餐的信息
+ * 属性: 一个ComboBuilder对象
+ * 方法: 构造函数和construct()函数
+ */
+public class Director {
+ private ComboBuilder comboBuilder;
+
+ public Director(ComboBuilder comboBuilder){
+ this.comboBuilder=comboBuilder;
+ }
+
+ /**
+ * @description: 套餐构建与组装方法
+ * @Param:
+ * @return:
+ * @author: Cheng
+ **/
+ 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/DevideByPattern/ChainofResponsibilityPattern/Complaint.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/ChainofResponsibilityPattern/Complaint.java
new file mode 100644
index 0000000..f34ad0a
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/ChainofResponsibilityPattern/Complaint.java
@@ -0,0 +1,79 @@
+package edu.tongji.designpattern.DevideByPattern.ChainofResponsibilityPattern;
+
+/*
+ * created by zhujitao
+ * 2019/10/22
+ * 责任链模式里面的投诉类
+ * */
+
+
+import edu.tongji.designpattern.CommonClass.Employee.Employee;
+import edu.tongji.designpattern.CommonClass.Employee.Manager;
+import edu.tongji.designpattern.CommonClass.Employee.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;
+ }
+ }
+
+ //get and set方法
+ 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/DevideByPattern/CommandPattern/AddDishCommand.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/CommandPattern/AddDishCommand.java
new file mode 100644
index 0000000..7c23d4b
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/CommandPattern/AddDishCommand.java
@@ -0,0 +1,18 @@
+package edu.tongji.designpattern.DevideByPattern.CommandPattern;
+
+
+import edu.tongji.designpattern.CommonClass.Employee.Waiter;
+import edu.tongji.designpattern.CommonClass.Other.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/DevideByPattern/CommandPattern/ConfirmOrderCommand.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/CommandPattern/ConfirmOrderCommand.java
new file mode 100644
index 0000000..524b8fb
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/CommandPattern/ConfirmOrderCommand.java
@@ -0,0 +1,15 @@
+package edu.tongji.designpattern.DevideByPattern.CommandPattern;
+
+
+import edu.tongji.designpattern.CommonClass.Employee.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/DevideByPattern/CommandPattern/CreateOrderCommand.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/CommandPattern/CreateOrderCommand.java
new file mode 100644
index 0000000..a780778
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/CommandPattern/CreateOrderCommand.java
@@ -0,0 +1,15 @@
+package edu.tongji.designpattern.DevideByPattern.CommandPattern;
+
+
+
+import edu.tongji.designpattern.CommonClass.Employee.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/DevideByPattern/CommandPattern/DropDishCommand.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/CommandPattern/DropDishCommand.java
new file mode 100644
index 0000000..a11e40d
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/CommandPattern/DropDishCommand.java
@@ -0,0 +1,16 @@
+package edu.tongji.designpattern.DevideByPattern.CommandPattern;
+
+
+import edu.tongji.designpattern.CommonClass.Employee.Waiter;
+import edu.tongji.designpattern.CommonClass.Other.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/DevideByPattern/CommandPattern/OrderPadCommand.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/CommandPattern/OrderPadCommand.java
new file mode 100644
index 0000000..dcdfe50
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/CommandPattern/OrderPadCommand.java
@@ -0,0 +1,18 @@
+package edu.tongji.designpattern.DevideByPattern.CommandPattern;
+
+
+import edu.tongji.designpattern.CommonClass.Employee.Waiter;
+import edu.tongji.designpattern.CommonClass.Order.Order;
+import edu.tongji.designpattern.CommonClass.Other.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/DevideByPattern/DecoratorPattern/CashierDecorator.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/DecoratorPattern/CashierDecorator.java
new file mode 100644
index 0000000..56de23b
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/DecoratorPattern/CashierDecorator.java
@@ -0,0 +1,29 @@
+package edu.tongji.designpattern.DevideByPattern.DecoratorPattern;
+
+/*
+ * created by zhujitao
+ * 2019/10/22
+ * 收银员类的抽象装饰类
+ * */
+
+
+import edu.tongji.designpattern.CommonClass.Employee.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/DevideByPattern/DecoratorPattern/VIPCashierDecorator.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/DecoratorPattern/VIPCashierDecorator.java
new file mode 100644
index 0000000..5f6e968
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/DecoratorPattern/VIPCashierDecorator.java
@@ -0,0 +1,46 @@
+package edu.tongji.designpattern.DevideByPattern.DecoratorPattern;
+
+/*
+ * created by zhujitao
+ * 2019/10/22
+ * 收银员类的装饰类的具体的类
+ * */
+
+import edu.tongji.designpattern.CommonClass.Employee.*;
+
+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;
+ }
+
+ //非VIP用户执行结账操作之后的询问是否办理VIP的函数
+ 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/DevideByPattern/FacadePattern/BeerOpener.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/FacadePattern/BeerOpener.java
new file mode 100644
index 0000000..77bc21d
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/FacadePattern/BeerOpener.java
@@ -0,0 +1,17 @@
+package edu.tongji.designpattern.DevideByPattern.FacadePattern;
+
+//啤酒开瓶器,实现饮料开瓶器接口
+public class BeerOpener implements DrinkOpener {
+
+ @Override
+ /**
+ * @author ruanby
+ * @date 2019/11/2
+
+ * @return null
+ * @function 打印要开的饮料信息
+ */
+ public void Open() {
+ System.out.println("class BeerOpener:method Open:服务员为您打开了百威啤酒!");
+ }
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/FacadePattern/CockOpener.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/FacadePattern/CockOpener.java
new file mode 100644
index 0000000..c03db2e
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/FacadePattern/CockOpener.java
@@ -0,0 +1,17 @@
+package edu.tongji.designpattern.DevideByPattern.FacadePattern;
+
+//可乐开瓶器,实现饮料开瓶器接口
+public class CockOpener implements DrinkOpener {
+
+ @Override
+ /**
+ * @author ruanby
+ * @date 2019/11/2
+
+ * @return null
+ * @function 打印要开的饮料信息
+ */
+ public void Open() {
+ System.out.println("class CockOpener:method Open:服务员为您打开了可乐!");
+ }
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/FacadePattern/DarkPlumJuiceOpener.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/FacadePattern/DarkPlumJuiceOpener.java
new file mode 100644
index 0000000..fc63871
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/FacadePattern/DarkPlumJuiceOpener.java
@@ -0,0 +1,16 @@
+package edu.tongji.designpattern.DevideByPattern.FacadePattern;
+//酸梅汁开瓶器,实现饮料开瓶器接口
+public class DarkPlumJuiceOpener implements DrinkOpener {
+
+ @Override
+ /**
+ * @author ruanby
+ * @date 2019/11/2
+
+ * @return null
+ * @function 打印要开的饮料信息
+ */
+ public void Open() {
+ System.out.println("class DarkPlumJuiceOpener:method Open:服务员为您打开了酸梅汁!");
+ }
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/FacadePattern/DrinkOpener.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/FacadePattern/DrinkOpener.java
new file mode 100644
index 0000000..bc9ed1b
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/FacadePattern/DrinkOpener.java
@@ -0,0 +1,14 @@
+package edu.tongji.designpattern.DevideByPattern.FacadePattern;
+
+//饮料开瓶器接口,只有一个open饮料方法
+public interface DrinkOpener {
+
+ /**
+ * @author ruanby
+ * @date
+ * @return null
+ * @function 打开饮料方法
+ */
+ void Open();
+
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/FacadePattern/OpenerMaker.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/FacadePattern/OpenerMaker.java
new file mode 100644
index 0000000..917c605
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/FacadePattern/OpenerMaker.java
@@ -0,0 +1,44 @@
+package edu.tongji.designpattern.DevideByPattern.FacadePattern;
+
+//向客户提供了一个客户可以使用开饮料功能的接口
+public class OpenerMaker {
+
+ //定义各种饮料开瓶器实例
+ private DrinkOpener beerOpener;
+ private DrinkOpener cockOpener;
+ private DrinkOpener spriteOpener;
+ private DrinkOpener darkPlumJuiceOpener;
+
+ /**
+ * @author ruanby
+ * @date 11/2
+ * @return null
+ * @function 这个接口的构造函数,初始化上面代码定义的饮料开瓶器对象
+ */
+ public OpenerMaker(){
+ beerOpener = new BeerOpener();
+ cockOpener = new CockOpener();
+ spriteOpener = new SpriteOpener();
+ darkPlumJuiceOpener = new DarkPlumJuiceOpener();
+ }
+
+ /**
+ * @author ruanby
+ * @date
+ * @return null
+ * @function 这里实现接口提供的方法,它们分别为打开啤酒,打开可乐,打开雪碧,打开酸梅汁
+ */
+ 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/DevideByPattern/FacadePattern/SpriteOpener.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/FacadePattern/SpriteOpener.java
new file mode 100644
index 0000000..a756098
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/FacadePattern/SpriteOpener.java
@@ -0,0 +1,16 @@
+package edu.tongji.designpattern.DevideByPattern.FacadePattern;
+//雪碧开瓶器,实现饮料开瓶器接口
+public class SpriteOpener implements DrinkOpener {
+
+ @Override
+ /**
+ * @author ruanby
+ * @date 2019/11/2
+
+ * @return null
+ * @function 打印要开的饮料信息
+ */
+ public void Open() {
+ System.out.println("class SpriteOpener:method Open:服务员为您打开了雪碧!");
+ }
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/FilterPattern/CustomerCriteria.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/FilterPattern/CustomerCriteria.java
new file mode 100644
index 0000000..b73fa80
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/FilterPattern/CustomerCriteria.java
@@ -0,0 +1,13 @@
+package edu.tongji.designpattern.DevideByPattern.FilterPattern;
+
+
+
+import edu.tongji.designpattern.CommonClass.Customer.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/DevideByPattern/FilterPattern/NonVIPCustomerCriterira.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/FilterPattern/NonVIPCustomerCriterira.java
new file mode 100644
index 0000000..900e054
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/FilterPattern/NonVIPCustomerCriterira.java
@@ -0,0 +1,26 @@
+package edu.tongji.designpattern.DevideByPattern.FilterPattern;
+
+
+
+import edu.tongji.designpattern.CommonClass.Customer.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/DevideByPattern/FilterPattern/VIPCustomerCriteria.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/FilterPattern/VIPCustomerCriteria.java
new file mode 100644
index 0000000..f80fe91
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/FilterPattern/VIPCustomerCriteria.java
@@ -0,0 +1,26 @@
+package edu.tongji.designpattern.DevideByPattern.FilterPattern;
+
+
+
+import edu.tongji.designpattern.CommonClass.Customer.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/DevideByPattern/IteratorPattern/DishIterator.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/IteratorPattern/DishIterator.java
new file mode 100644
index 0000000..c57d3e4
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/IteratorPattern/DishIterator.java
@@ -0,0 +1,55 @@
+package edu.tongji.designpattern.DevideByPattern.IteratorPattern;
+
+
+
+import edu.tongji.designpattern.CommonClass.Order.Order;
+import edu.tongji.designpattern.CommonClass.Other.Dish;
+
+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;
+ }
+ 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/DevideByPattern/IteratorPattern/MyIterator.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/IteratorPattern/MyIterator.java
new file mode 100644
index 0000000..7b46175
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/IteratorPattern/MyIterator.java
@@ -0,0 +1,8 @@
+package edu.tongji.designpattern.DevideByPattern.IteratorPattern;
+
+public interface MyIterator {
+ boolean hasNext();
+ T getNext();
+ T getCurrent();
+ void setPosition(int i);
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/IteratorPattern/OrderIterator.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/IteratorPattern/OrderIterator.java
new file mode 100644
index 0000000..de70f50
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/IteratorPattern/OrderIterator.java
@@ -0,0 +1,56 @@
+package edu.tongji.designpattern.DevideByPattern.IteratorPattern;
+
+
+
+import edu.tongji.designpattern.CommonClass.Order.Order;
+import edu.tongji.designpattern.CommonClass.Order.OrderAggregate;
+
+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;
+ }
+ else {
+ System.out.println("out of bound");
+ }
+ }
+
+ public OrderAggregate getAggregate(){return this.agg;}
+
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/MediatorPattern/InterPhoneChannel.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/MediatorPattern/InterPhoneChannel.java
new file mode 100644
index 0000000..4bee83a
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/MediatorPattern/InterPhoneChannel.java
@@ -0,0 +1,92 @@
+package edu.tongji.designpattern.DevideByPattern.MediatorPattern;
+
+import edu.tongji.designpattern.CommonClass.Other.*;
+import edu.tongji.designpattern.CommonClass.Employee.Employee;
+import edu.tongji.designpattern.CommonClass.Employee.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author steve
+ * @description singleton 对象,获取公共信道
+ */
+public class InterPhoneChannel {
+ private Boolean status = false;
+ private List extends Employee> onlineEmployees = new ArrayList();
+ public static InterPhoneChannel instance = null;
+
+ /**
+ * @description private constructor
+ * @param eArray
+ */
+ 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;
+ }
+
+
+ /**
+ * @descriiption get singleton object
+ * @param eArray
+ * @return
+ */
+ public static InterPhoneChannel getInstance(List extends Employee> eArray){
+ if (instance == null){
+ instance = new InterPhoneChannel(eArray);
+ }
+ return instance;
+ }
+
+ /**
+ * @author steve
+ * @description 发送消息
+ * @param sender 发送者
+ * @param message 消息
+ * @param bctype 广播类型
+ * @return boolean 发送结果
+ */
+ 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_WAITER){
+ 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/DevideByPattern/PrototypePattern/Memento.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/PrototypePattern/Memento.java
new file mode 100644
index 0000000..a0db9e2
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/PrototypePattern/Memento.java
@@ -0,0 +1,38 @@
+package edu.tongji.designpattern.DevideByPattern.PrototypePattern;
+
+/*
+ * 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;
+ }
+
+ //根据index获取备忘录中存储的订单的函数,最终会返回一个orderClone
+ 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/DevideByPattern/PrototypePattern/OrderClone.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/PrototypePattern/OrderClone.java
new file mode 100644
index 0000000..96ae35a
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/PrototypePattern/OrderClone.java
@@ -0,0 +1,60 @@
+package edu.tongji.designpattern.DevideByPattern.PrototypePattern;
+
+/*
+ * created by zhujitao
+ * 2019/10/22
+ * 原型模式里面的例子,使用了原型模式
+ * */
+
+
+
+import edu.tongji.designpattern.CommonClass.Items.Item;
+import edu.tongji.designpattern.CommonClass.Order.Order;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class OrderClone implements Cloneable{
+
+ //下面是order中需要记录的信息,在这里存储下来,然后将对象存入备忘录中
+ private List
- 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/DevideByPattern/ProxyPattern/MenuSource.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/ProxyPattern/MenuSource.java
new file mode 100644
index 0000000..661c47f
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/ProxyPattern/MenuSource.java
@@ -0,0 +1,12 @@
+package edu.tongji.designpattern.DevideByPattern.ProxyPattern;
+
+
+/**
+ * @created by Cheng
+ * 资源类:假设点菜机上面的图片文件等资源有一个远程存放库
+ * 用代理模式来减少访问带来的消耗
+ */
+public interface MenuSource {
+ //资源的显示函数
+ void show();
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/ProxyPattern/ProxyMenuSource.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/ProxyPattern/ProxyMenuSource.java
new file mode 100644
index 0000000..903494b
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/ProxyPattern/ProxyMenuSource.java
@@ -0,0 +1,33 @@
+package edu.tongji.designpattern.DevideByPattern.ProxyPattern;
+
+/**
+ * @created by Cheng
+ * 代理资源类:用一个远程代理类来代替RealMenuSource来加载资源
+ * 减少了RealMenuSource对象加载占用的内存
+ * 属性: RealMenuSource对象以及资源文件source
+ * 方法: 资源显示函数,在里面生成RealMenuSource对象
+ *
+ */
+public class ProxyMenuSource implements MenuSource {
+ private RealMenuSource realMenuSource;
+ private String source;
+
+ public ProxyMenuSource(String source){
+ this.source=source;
+ }
+
+ /**
+ * @description: 若RealMenuSource对象没有初始化资源文件则初始化资源文件
+ * 否则直接加载资源文件显示
+ * @Param:
+ * @return:
+ * @author: Cheng
+ **/
+ @Override
+ public void show() {
+ if(realMenuSource==null){
+ realMenuSource=new RealMenuSource(source);
+ }
+ realMenuSource.show();
+ }
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/ProxyPattern/RealMenuSource.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/ProxyPattern/RealMenuSource.java
new file mode 100644
index 0000000..008fc9e
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/ProxyPattern/RealMenuSource.java
@@ -0,0 +1,45 @@
+package edu.tongji.designpattern.DevideByPattern.ProxyPattern;
+
+
+/**
+ * @created by Cheng
+ * 真正资源类:模仿真正的资源加载过程
+ * 属性:资源source
+ * 方法:初始化函数默认加载资源
+ * loadFromDisk()函数加载资源
+ */
+public class RealMenuSource implements MenuSource {
+ private String source;
+
+ /**
+ * @description: 构造函数,初始时要加载资源文件
+ * @Param: String source
+ * @return:
+ * @author: Cheng
+ **/
+ public RealMenuSource(String source){
+ this.source=source;
+ loadFromDisk(source);
+ }
+
+ /**
+ * @description: 显示的过程函数
+ * @Param:
+ * @return:
+ * @author: Cheng
+ **/
+ @Override
+ public void show() {
+ System.out.println("Show"+source);
+ }
+
+ /**
+ * @description: 加载资源的过程函数
+ * @Param:
+ * @return:
+ * @author: Cheng
+ **/
+ private void loadFromDisk(String source){
+ System.out.println("Loading"+source);
+ }
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StatePattern/CheckOutState.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StatePattern/CheckOutState.java
new file mode 100644
index 0000000..7a92660
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StatePattern/CheckOutState.java
@@ -0,0 +1,30 @@
+package edu.tongji.designpattern.DevideByPattern.StatePattern;
+
+import edu.tongji.designpattern.CommonClass.Customer.Customer;
+
+/**
+ * @created by Cheng
+ * 结账状态类:顾客的结账状态类
+ */
+public class CheckOutState extends CustomerState{
+
+ /**
+ * @description: 判断顾客是否处与结账状态
+ * 如果是,输出顾客状态,如果不是,自动进入下一个状态就餐状态并输出状态
+ * @Param: Customer customer
+ * @return:
+ * @autho: Cheng
+ **/
+ @Override
+ public void getState(Customer customer) {
+ if(customer.getTime()<40){
+ System.out.println("顾客现在状态是结账状态");
+ }else{
+ //跳转进入离开状态
+ customer.setState(new LeaveState());
+ customer.getState();
+ }
+
+
+ }
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StatePattern/CustomerState.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StatePattern/CustomerState.java
new file mode 100644
index 0000000..93c5dc7
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StatePattern/CustomerState.java
@@ -0,0 +1,14 @@
+package edu.tongji.designpattern.DevideByPattern.StatePattern;
+
+import edu.tongji.designpattern.CommonClass.Customer.Customer;
+
+/**
+ * @created by Cheng
+ * 顾客状态类:一个返回顾客状态的抽象类
+ * 状态:点单状态->等待状态->就餐状态->离开状态
+ * 根据一个参数(目前设为时间)来得到顾客当前状态的信息
+ * 基于状态模式,起始状态是点餐状态,即OrderState类
+ */
+public abstract class CustomerState {
+ public abstract void getState(Customer customer);
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StatePattern/EatState.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StatePattern/EatState.java
new file mode 100644
index 0000000..1bc4e25
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StatePattern/EatState.java
@@ -0,0 +1,30 @@
+package edu.tongji.designpattern.DevideByPattern.StatePattern;
+
+import edu.tongji.designpattern.CommonClass.Customer.Customer;
+
+/**
+ * @created by Cheng
+ * 就餐状态类:顾客的就餐状态类
+ */
+public class EatState extends CustomerState {
+
+ /**
+ * @description: 判断顾客是否处与就餐状态
+ * 如果是,输出顾客状态,如果不是,自动进入下一个状态就餐状态并输出状态
+ * @Param: Customer customer
+ * @return:
+ * @autho: Cheng
+ **/
+ @Override
+ public void getState(Customer customer) {
+ if(customer.getTime()<30){
+ System.out.println("顾客现在状态是就餐状态");
+ }else{
+ //跳转进入结账状态
+ customer.setState(new CheckOutState());
+ customer.getState();
+ }
+
+
+ }
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StatePattern/LeaveState.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StatePattern/LeaveState.java
new file mode 100644
index 0000000..b754ada
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StatePattern/LeaveState.java
@@ -0,0 +1,21 @@
+package edu.tongji.designpattern.DevideByPattern.StatePattern;
+
+import edu.tongji.designpattern.CommonClass.Customer.Customer;
+
+/**
+ * @created by Cheng
+ * 离开状态类:顾客的离开状态类
+ */
+public class LeaveState extends CustomerState {
+
+ /**
+ * @description: 输出顾客状态为离开状态,因为这是最后一个状态,不用跳转
+ * @Param: Customer customer
+ * @return:
+ * @autho: Cheng
+ **/
+ @Override
+ public void getState(Customer customer) {
+ System.out.println("顾客已离开");
+ }
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StatePattern/OrderState.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StatePattern/OrderState.java
new file mode 100644
index 0000000..94ac09a
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StatePattern/OrderState.java
@@ -0,0 +1,29 @@
+package edu.tongji.designpattern.DevideByPattern.StatePattern;
+
+import edu.tongji.designpattern.CommonClass.Customer.Customer;
+
+/**
+ * @created by Cheng
+ * 点单状态类:顾客的点单状态类
+ */
+public class OrderState extends CustomerState{
+
+ /**
+ * @description: 判断顾客是否处与点单状态
+ * 如果是,输出顾客状态,如果不是,自动进入下一个状态就餐状态并输出状态
+ * @Param: Customer customer
+ * @return:
+ * @autho: Cheng
+ **/
+ @Override
+ public void getState(Customer customer) {
+ if(customer.getTime()<10){
+ System.out.println("顾客现在状态是点单状态");
+ }else{
+ //跳转进入等待状态
+ customer.setState(new WaitState());
+ customer.getState();
+ }
+
+ }
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StatePattern/WaitState.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StatePattern/WaitState.java
new file mode 100644
index 0000000..d286fce
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StatePattern/WaitState.java
@@ -0,0 +1,30 @@
+package edu.tongji.designpattern.DevideByPattern.StatePattern;
+
+import edu.tongji.designpattern.CommonClass.Customer.Customer;
+
+/**
+ * @created by Cheng
+ * 等待状态类:顾客的等待状态类
+ */
+public class WaitState extends CustomerState{
+
+ /**
+ * @description: 判断顾客是否处与等待状态
+ * 如果是,输出顾客状态,如果不是,自动进入下一个状态就餐状态并输出状态
+ * @Param: Customer customer
+ * @return:
+ * @autho: Cheng
+ **/
+ @Override
+ public void getState(Customer customer) {
+ if(customer.getTime()<20){
+ System.out.println("顾客现在状态是等待状态");
+ }else{
+ //跳转进入就餐状态
+ customer.setState(new EatState());
+ customer.getState();
+ }
+
+
+ }
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StrategyPattern/AddDishStrategy.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StrategyPattern/AddDishStrategy.java
new file mode 100644
index 0000000..1e946da
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StrategyPattern/AddDishStrategy.java
@@ -0,0 +1,12 @@
+package edu.tongji.designpattern.DevideByPattern.StrategyPattern;
+
+import edu.tongji.designpattern.CommonClass.Other.*;
+import edu.tongji.designpattern.CommonClass.Order.*;
+
+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/DevideByPattern/StrategyPattern/DropDishStrategy.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StrategyPattern/DropDishStrategy.java
new file mode 100644
index 0000000..ff53f18
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StrategyPattern/DropDishStrategy.java
@@ -0,0 +1,17 @@
+package edu.tongji.designpattern.DevideByPattern.StrategyPattern;
+
+
+import edu.tongji.designpattern.CommonClass.Order.Order;
+import edu.tongji.designpattern.CommonClass.Other.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/DevideByPattern/StrategyPattern/OrderConfirmStrategy.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StrategyPattern/OrderConfirmStrategy.java
new file mode 100644
index 0000000..712db30
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StrategyPattern/OrderConfirmStrategy.java
@@ -0,0 +1,19 @@
+package edu.tongji.designpattern.DevideByPattern.StrategyPattern;
+
+
+import edu.tongji.designpattern.CommonClass.Order.Order;
+import edu.tongji.designpattern.CommonClass.Other.Dish;
+import edu.tongji.designpattern.DevideByPattern.IteratorPattern.DishIterator;
+
+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/DevideByPattern/StrategyPattern/OrderCreateStrategy.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StrategyPattern/OrderCreateStrategy.java
new file mode 100644
index 0000000..949fd3c
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StrategyPattern/OrderCreateStrategy.java
@@ -0,0 +1,12 @@
+package edu.tongji.designpattern.DevideByPattern.StrategyPattern;
+
+
+import edu.tongji.designpattern.CommonClass.Order.Order;
+import edu.tongji.designpattern.CommonClass.Other.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/DevideByPattern/StrategyPattern/OrderRecordingStrategy.java b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StrategyPattern/OrderRecordingStrategy.java
new file mode 100644
index 0000000..527a891
--- /dev/null
+++ b/DesignPatternProject/src/edu/tongji/designpattern/DevideByPattern/StrategyPattern/OrderRecordingStrategy.java
@@ -0,0 +1,9 @@
+package edu.tongji.designpattern.DevideByPattern.StrategyPattern;
+
+import edu.tongji.designpattern.CommonClass.Order.*;
+import edu.tongji.designpattern.CommonClass.Other.Dish;
+
+
+public interface OrderRecordingStrategy {
+ Order execute(Dish dish, Order order);
+}
diff --git a/DesignPatternProject/src/edu/tongji/designpattern/Main.java b/DesignPatternProject/src/edu/tongji/designpattern/Main.java
index 3189d8a..0fc7011 100644
--- a/DesignPatternProject/src/edu/tongji/designpattern/Main.java
+++ b/DesignPatternProject/src/edu/tongji/designpattern/Main.java
@@ -1,12 +1,186 @@
package edu.tongji.designpattern;
-//import edu.tongji.designpattern.ClassDesign.*;
-import edu.tongji.designpattern.ClassDesign.Person.Cook;
+
+
+import edu.tongji.designpattern.CommonClass.Employee.Employee;
+import edu.tongji.designpattern.CommonClass.Employee.EmployeeTitle;
+import edu.tongji.designpattern.CommonClass.Employee.Manager;
+import edu.tongji.designpattern.CommonClass.Employee.Waiter;
+import edu.tongji.designpattern.DevideByPattern.BridgePattern.AirConditionerAPI;
+import edu.tongji.designpattern.DevideByPattern.BridgePattern.FloorAirConditioner;
+import edu.tongji.designpattern.DevideByPattern.MediatorPattern.InterPhoneChannel;
+
+import java.util.ArrayList;
+import java.util.List;
+
public class Main {
+ //// 合并的时候这里写单元测试,加上自己的函数
+ public class Debug{
+ public class Eyisheng{
+ public void serveNewCustomer(){
+ List elist = new ArrayList<>();
+ AirConditionerAPI airConditionerAPI = new FloorAirConditioner();
+ Waiter wt1 = new Waiter();
+ Waiter wt2 = new Waiter();
+ Manager manager = new Manager(1,"manager",
+ EmployeeTitle.MANAGER,airConditionerAPI);
+ elist.add(wt1);
+ elist.add(wt2);
+ elist.add(manager);
+ InterPhoneChannel channel = InterPhoneChannel.getInstance(elist);
+
+ }
+ }
+ }
+
+ /*
+ 我定义了一些 Enum type,修改了你们的参数,但是输出时没有改
+ */
public static void main(String[] args) {
- System.out.println("hello world");
+
+
+//test for StatePattern
+ //初始时根据时间不同来让顾客的状态发生变化
+ //感觉需要有一个更好的办法
+ //顾客的点餐、等待、就餐等状态之间的变化需要的参数应当不是同一个
+ //或者是同一个参数(时间),但如何传、由谁传递需要决定
+// Customer customer= new Customer();
+// customer.setTime(8);
+// customer.getState();
+// customer.setTime(9);
+// customer.getState();
+// customer.setTime(11);
+// customer.getState();
+// customer.setTime(21);
+// customer.getState();
+// customer.setTime(31);
+// customer.getState();
+// customer.setTime(41);
+// customer.getState();
+
+
+
+
+//test for BridgePattern
+ //注册不同的职工来调用同一个接口API的不同实体类
+// 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("张先生", 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里面
+// //感觉需要更好的划分方法(或者应该有判断语句来自动划分顾客种类?
+// customer1.add(customer2);
+// customer3.add(customer4);
+//
+// System.out.println(customer1);
+// System.out.println(customer3);
+//
+////test for ProxyPattern
+// MenuSource source=new ProxyMenuSource("pictureOfDish.jpg");
+// //资源文件需要从磁盘加载
+// source.show();
+// System.out.println(" ");
+// //资源文件不需要从磁盘加载
+// 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/edu/tongji/designpattern/ClassDesign/Customer/Customer.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Customer/Customer.class
deleted file mode 100644
index 8c2ba71..0000000
Binary files a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Customer/Customer.class and /dev/null 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 f0e0f56..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
deleted file mode 100644
index 1fbc890..0000000
Binary files a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Order/Order.class and /dev/null 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 7874a60..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/Cashier.class b/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Cashier.class
deleted file mode 100644
index abbe733..0000000
Binary files a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Cashier.class and /dev/null 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
deleted file mode 100644
index fc831e9..0000000
Binary files a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Cook.class and /dev/null 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
deleted file mode 100644
index f4d8767..0000000
Binary files a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Employee.class and /dev/null 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
deleted file mode 100644
index 132e582..0000000
Binary files a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Manager.class and /dev/null 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
deleted file mode 100644
index ef9f358..0000000
Binary files a/out/production/DesignPatternProject/edu/tongji/designpattern/ClassDesign/Person/Waiter.class and /dev/null differ
diff --git a/out/production/DesignPatternProject/edu/tongji/designpattern/Main.class b/out/production/DesignPatternProject/edu/tongji/designpattern/Main.class
deleted file mode 100644
index 7489e23..0000000
Binary files a/out/production/DesignPatternProject/edu/tongji/designpattern/Main.class and /dev/null differ