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 @@ - + + + + + + + + + + + + + + + + + + \ 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 @@ - - \ 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 @@ - - - - - + + + + + + + + + + + + - + - - 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 onlineEmployees = new ArrayList(); + public static InterPhoneChannel instance = null; + + /** + * @description private constructor + * @param eArray + */ + private InterPhoneChannel(List eArray){ + try{ + this.onlineEmployees = eArray; + if (eArray.isEmpty()) + throw new Exception("empty array"); + for (Employee e:eArray){ + if (!e.setChannel(this)){ + throw new Exception("set channel failure"); + } + } + }catch (Exception e){ + System.out.println(e); + return; + } + this.status = true; + } + + + /** + * @descriiption get singleton object + * @param eArray + * @return + */ + public static InterPhoneChannel getInstance(List 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