From 5d8c84c3f74b16afa3b8d635cf39b75842b5f0af Mon Sep 17 00:00:00 2001 From: huangmaomu Date: Thu, 8 Nov 2018 16:46:06 +0800 Subject: [PATCH 1/8] update Amplifier.java find one small typo change from dvd to tuner on 34 --- src/headfirst/designpatterns/facade/hometheater/Amplifier.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/headfirst/designpatterns/facade/hometheater/Amplifier.java b/src/headfirst/designpatterns/facade/hometheater/Amplifier.java index ba0da133..d05e9de6 100755 --- a/src/headfirst/designpatterns/facade/hometheater/Amplifier.java +++ b/src/headfirst/designpatterns/facade/hometheater/Amplifier.java @@ -31,7 +31,7 @@ public void setVolume(int level) { } public void setTuner(Tuner tuner) { - System.out.println(description + " setting tuner to " + dvd); + System.out.println(description + " setting tuner to " + ); this.tuner = tuner; } From b3d889d727224578ea4a535555b771f269eaa8d2 Mon Sep 17 00:00:00 2001 From: huangmaomu Date: Thu, 8 Nov 2018 16:47:13 +0800 Subject: [PATCH 2/8] Update Amplifier.java --- src/headfirst/designpatterns/facade/hometheater/Amplifier.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/headfirst/designpatterns/facade/hometheater/Amplifier.java b/src/headfirst/designpatterns/facade/hometheater/Amplifier.java index d05e9de6..41ace9d9 100755 --- a/src/headfirst/designpatterns/facade/hometheater/Amplifier.java +++ b/src/headfirst/designpatterns/facade/hometheater/Amplifier.java @@ -31,7 +31,7 @@ public void setVolume(int level) { } public void setTuner(Tuner tuner) { - System.out.println(description + " setting tuner to " + ); + System.out.println(description + " setting tuner to " + tuner); this.tuner = tuner; } From 4feb6389b9ea268001c1796fbf2146f2433cbb59 Mon Sep 17 00:00:00 2001 From: huangmaomu Date: Thu, 8 Nov 2018 17:14:48 +0800 Subject: [PATCH 3/8] update Tuner correct Typo --- src/headfirst/designpatterns/facade/hometheater/Tuner.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/headfirst/designpatterns/facade/hometheater/Tuner.java b/src/headfirst/designpatterns/facade/hometheater/Tuner.java index c68dc30c..b559bed8 100755 --- a/src/headfirst/designpatterns/facade/hometheater/Tuner.java +++ b/src/headfirst/designpatterns/facade/hometheater/Tuner.java @@ -7,6 +7,7 @@ public class Tuner { public Tuner(String description, Amplifier amplifier) { this.description = description; + this.amplifier = amplifier; } public void on() { From 1d82f31cdcc5f915a8f002cb209bd4c5984cc922 Mon Sep 17 00:00:00 2001 From: huangmaomu Date: Fri, 9 Nov 2018 09:50:25 +0800 Subject: [PATCH 4/8] remove setCd from endCd --- .../designpatterns/facade/hometheater/HomeTheaterFacade.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/headfirst/designpatterns/facade/hometheater/HomeTheaterFacade.java b/src/headfirst/designpatterns/facade/hometheater/HomeTheaterFacade.java index 627243b6..45e7fef7 100755 --- a/src/headfirst/designpatterns/facade/hometheater/HomeTheaterFacade.java +++ b/src/headfirst/designpatterns/facade/hometheater/HomeTheaterFacade.java @@ -72,7 +72,6 @@ public void listenToCd(String cdTitle) { public void endCd() { System.out.println("Shutting down CD..."); amp.off(); - amp.setCd(cd); cd.eject(); cd.off(); } From 8a3ab3014f591d6673139e5dc8bafbc0a157267a Mon Sep 17 00:00:00 2001 From: huangmaomu Date: Wed, 14 Nov 2018 13:15:12 +0800 Subject: [PATCH 5/8] create a new folder to complete the game exercise --- src/headfirst/designpatterns/strategy/game | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/headfirst/designpatterns/strategy/game diff --git a/src/headfirst/designpatterns/strategy/game b/src/headfirst/designpatterns/strategy/game new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/src/headfirst/designpatterns/strategy/game @@ -0,0 +1 @@ + From 204f03f35b06b40d64be7a2e9089b9d27a5a7134 Mon Sep 17 00:00:00 2001 From: huangmaomu Date: Wed, 14 Nov 2018 13:21:31 +0800 Subject: [PATCH 6/8] Delete game --- src/headfirst/designpatterns/strategy/game | 1 - 1 file changed, 1 deletion(-) delete mode 100644 src/headfirst/designpatterns/strategy/game diff --git a/src/headfirst/designpatterns/strategy/game b/src/headfirst/designpatterns/strategy/game deleted file mode 100644 index 8b137891..00000000 --- a/src/headfirst/designpatterns/strategy/game +++ /dev/null @@ -1 +0,0 @@ - From 1d57665a4da7860c2496ddeb755ea4009cf06f03 Mon Sep 17 00:00:00 2001 From: huangmaomu Date: Wed, 14 Nov 2018 13:24:28 +0800 Subject: [PATCH 7/8] folder to store game package for strategy --- src/headfirst/designpatterns/strategyPattern/game/empty | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/headfirst/designpatterns/strategyPattern/game/empty diff --git a/src/headfirst/designpatterns/strategyPattern/game/empty b/src/headfirst/designpatterns/strategyPattern/game/empty new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/src/headfirst/designpatterns/strategyPattern/game/empty @@ -0,0 +1 @@ + From 499340297abcaa1f8a4c4bdfe82d1197ec4e3803 Mon Sep 17 00:00:00 2001 From: huangmaomu Date: Wed, 14 Nov 2018 13:43:35 +0800 Subject: [PATCH 8/8] Add sample code to complete the exercise regarding strategy pattern. One abstract classs, which is Character. An interface, which is WeaponBehavior. --- .../strategyPattern/game/AxeBehavior.java | 11 +++++++++ .../game/BowAndArrowBehavior.java | 11 +++++++++ .../strategyPattern/game/Character.java | 17 +++++++++++++ .../strategyPattern/game/GameStart.java | 24 +++++++++++++++++++ .../strategyPattern/game/King.java | 11 +++++++++ .../strategyPattern/game/KnifeBehavior.java | 11 +++++++++ .../strategyPattern/game/Knight.java | 11 +++++++++ .../strategyPattern/game/Queen.java | 12 ++++++++++ .../strategyPattern/game/SwordBehavior.java | 11 +++++++++ .../strategyPattern/game/Troll.java | 11 +++++++++ .../strategyPattern/game/WeaponBehavior.java | 5 ++++ .../designpatterns/strategyPattern/game/empty | 1 - 12 files changed, 135 insertions(+), 1 deletion(-) create mode 100644 src/headfirst/designpatterns/strategyPattern/game/AxeBehavior.java create mode 100644 src/headfirst/designpatterns/strategyPattern/game/BowAndArrowBehavior.java create mode 100644 src/headfirst/designpatterns/strategyPattern/game/Character.java create mode 100644 src/headfirst/designpatterns/strategyPattern/game/GameStart.java create mode 100644 src/headfirst/designpatterns/strategyPattern/game/King.java create mode 100644 src/headfirst/designpatterns/strategyPattern/game/KnifeBehavior.java create mode 100644 src/headfirst/designpatterns/strategyPattern/game/Knight.java create mode 100644 src/headfirst/designpatterns/strategyPattern/game/Queen.java create mode 100644 src/headfirst/designpatterns/strategyPattern/game/SwordBehavior.java create mode 100644 src/headfirst/designpatterns/strategyPattern/game/Troll.java create mode 100644 src/headfirst/designpatterns/strategyPattern/game/WeaponBehavior.java delete mode 100644 src/headfirst/designpatterns/strategyPattern/game/empty diff --git a/src/headfirst/designpatterns/strategyPattern/game/AxeBehavior.java b/src/headfirst/designpatterns/strategyPattern/game/AxeBehavior.java new file mode 100644 index 00000000..313657f5 --- /dev/null +++ b/src/headfirst/designpatterns/strategyPattern/game/AxeBehavior.java @@ -0,0 +1,11 @@ +package game1; + +public class AxeBehavior implements WeaponBehavior { + + @Override + public void useWeapon() { + // TODO Auto-generated method stub + System.out.println("chopping with an axe"); + } + +} diff --git a/src/headfirst/designpatterns/strategyPattern/game/BowAndArrowBehavior.java b/src/headfirst/designpatterns/strategyPattern/game/BowAndArrowBehavior.java new file mode 100644 index 00000000..8ca03d94 --- /dev/null +++ b/src/headfirst/designpatterns/strategyPattern/game/BowAndArrowBehavior.java @@ -0,0 +1,11 @@ +package game1; + +public class BowAndArrowBehavior implements WeaponBehavior { + + @Override + public void useWeapon() { + // TODO Auto-generated method stub + System.out.println("shooting with an arrow and a bow"); + } + +} diff --git a/src/headfirst/designpatterns/strategyPattern/game/Character.java b/src/headfirst/designpatterns/strategyPattern/game/Character.java new file mode 100644 index 00000000..eafca8f1 --- /dev/null +++ b/src/headfirst/designpatterns/strategyPattern/game/Character.java @@ -0,0 +1,17 @@ +package game1; + +public abstract class Character { + WeaponBehavior weapon; + + public void setWeapon(WeaponBehavior w){ + this.weapon = w; + } + + public void performUseWeapon() { + weapon.useWeapon(); + } + + public void fight() { + + } +} diff --git a/src/headfirst/designpatterns/strategyPattern/game/GameStart.java b/src/headfirst/designpatterns/strategyPattern/game/GameStart.java new file mode 100644 index 00000000..8988169d --- /dev/null +++ b/src/headfirst/designpatterns/strategyPattern/game/GameStart.java @@ -0,0 +1,24 @@ +package game1; + +public class GameStart { + + public static void main(String[] args) { + // TODO Auto-generated method stub + Character character1 = new Queen(); + character1.performUseWeapon(); + character1.fight(); + + Character character2 = new King(); + character2.performUseWeapon(); + character2.fight(); + + Character character3 = new Troll(); + character3.performUseWeapon(); + character3.fight(); + + Character character4 = new Knight(); + character4.performUseWeapon(); + character4.fight(); + } + +} diff --git a/src/headfirst/designpatterns/strategyPattern/game/King.java b/src/headfirst/designpatterns/strategyPattern/game/King.java new file mode 100644 index 00000000..92f49eb1 --- /dev/null +++ b/src/headfirst/designpatterns/strategyPattern/game/King.java @@ -0,0 +1,11 @@ +package game1; + +public class King extends Character { + public King() { + weapon = new SwordBehavior(); + } + + public void fight() { + System.out.println("King is fighting"); + } +} diff --git a/src/headfirst/designpatterns/strategyPattern/game/KnifeBehavior.java b/src/headfirst/designpatterns/strategyPattern/game/KnifeBehavior.java new file mode 100644 index 00000000..a2ddc806 --- /dev/null +++ b/src/headfirst/designpatterns/strategyPattern/game/KnifeBehavior.java @@ -0,0 +1,11 @@ +package game1; + +public class KnifeBehavior implements WeaponBehavior { + + public void useWeapon() { + // TODO Auto-generated method stub + System.out.println("cutting with a knife"); + + } + +} diff --git a/src/headfirst/designpatterns/strategyPattern/game/Knight.java b/src/headfirst/designpatterns/strategyPattern/game/Knight.java new file mode 100644 index 00000000..1e12e303 --- /dev/null +++ b/src/headfirst/designpatterns/strategyPattern/game/Knight.java @@ -0,0 +1,11 @@ +package game1; + +public class Knight extends Character { + public Knight() { + weapon = new KnifeBehavior(); + } + + public void fight() { + System.out.println("Knight is fighting"); + } +} diff --git a/src/headfirst/designpatterns/strategyPattern/game/Queen.java b/src/headfirst/designpatterns/strategyPattern/game/Queen.java new file mode 100644 index 00000000..69ef9900 --- /dev/null +++ b/src/headfirst/designpatterns/strategyPattern/game/Queen.java @@ -0,0 +1,12 @@ +package game1; + +public class Queen extends Character { + + public Queen() { + weapon = new BowAndArrowBehavior(); + } + + public void fight() { + System.out.println("Queen is fighting"); + } +} diff --git a/src/headfirst/designpatterns/strategyPattern/game/SwordBehavior.java b/src/headfirst/designpatterns/strategyPattern/game/SwordBehavior.java new file mode 100644 index 00000000..409f0fb8 --- /dev/null +++ b/src/headfirst/designpatterns/strategyPattern/game/SwordBehavior.java @@ -0,0 +1,11 @@ +package game1; + +public class SwordBehavior implements WeaponBehavior { + + @Override + public void useWeapon() { + // TODO Auto-generated method stub + System.out.println("swinging a sword"); + } + +} diff --git a/src/headfirst/designpatterns/strategyPattern/game/Troll.java b/src/headfirst/designpatterns/strategyPattern/game/Troll.java new file mode 100644 index 00000000..05ee8a1f --- /dev/null +++ b/src/headfirst/designpatterns/strategyPattern/game/Troll.java @@ -0,0 +1,11 @@ +package game1; + +public class Troll extends Character { + public Troll() { + weapon = new AxeBehavior(); + } + + public void fight() { + System.out.println("Troll is fighting"); + } +} diff --git a/src/headfirst/designpatterns/strategyPattern/game/WeaponBehavior.java b/src/headfirst/designpatterns/strategyPattern/game/WeaponBehavior.java new file mode 100644 index 00000000..1e210fdc --- /dev/null +++ b/src/headfirst/designpatterns/strategyPattern/game/WeaponBehavior.java @@ -0,0 +1,5 @@ +package game1; + +public interface WeaponBehavior { + public void useWeapon(); +} diff --git a/src/headfirst/designpatterns/strategyPattern/game/empty b/src/headfirst/designpatterns/strategyPattern/game/empty deleted file mode 100644 index 8b137891..00000000 --- a/src/headfirst/designpatterns/strategyPattern/game/empty +++ /dev/null @@ -1 +0,0 @@ -