From d54cdf1c676123a0a7a89c901810eb50f1c68bf8 Mon Sep 17 00:00:00 2001 From: Dimo-2562 Date: Fri, 28 Nov 2025 18:56:58 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=EC=A0=84=EB=9E=B5=20=ED=8C=A8?= =?UTF-8?q?=ED=84=B4=20=EA=B5=AC=ED=98=84=20(=EC=87=BC=ED=95=91=20?= =?UTF-8?q?=EC=98=88=EC=A0=9C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/strategypattern/Client.java | 20 ++++++++++++ src/strategypattern/context/Item.java | 16 ++++++++++ src/strategypattern/context/ShoppingCart.java | 32 +++++++++++++++++++ .../strategy/MasterCardStrategy.java | 19 +++++++++++ .../strategy/MobilePayStrategy.java | 17 ++++++++++ .../strategy/PaymentStrategy.java | 5 +++ 6 files changed, 109 insertions(+) create mode 100644 src/strategypattern/Client.java create mode 100644 src/strategypattern/context/Item.java create mode 100644 src/strategypattern/context/ShoppingCart.java create mode 100644 src/strategypattern/strategy/MasterCardStrategy.java create mode 100644 src/strategypattern/strategy/MobilePayStrategy.java create mode 100644 src/strategypattern/strategy/PaymentStrategy.java diff --git a/src/strategypattern/Client.java b/src/strategypattern/Client.java new file mode 100644 index 0000000..ff3eb79 --- /dev/null +++ b/src/strategypattern/Client.java @@ -0,0 +1,20 @@ +package strategypattern; + +import strategypattern.context.Item; +import strategypattern.context.ShoppingCart; +import strategypattern.strategy.MasterCardStrategy; +import strategypattern.strategy.MobilePayStrategy; + +public class Client { + public static void main(String[] args) { + ShoppingCart cart = new ShoppingCart(); + cart.addItem(new Item("Macbook Pro", 10000)); + cart.addItem(new Item("IPhone", 2000)); + + cart.setPaymentStrategy(new MasterCardStrategy("Dmori", "1234-1234-1234-1234", "123")); + cart.pay(); + + cart.setPaymentStrategy(new MobilePayStrategy("example@naver.com", "12345")); + cart.pay(); + } +} diff --git a/src/strategypattern/context/Item.java b/src/strategypattern/context/Item.java new file mode 100644 index 0000000..6a67c6f --- /dev/null +++ b/src/strategypattern/context/Item.java @@ -0,0 +1,16 @@ +package strategypattern.context; + +public class Item { + + private String name; + private int price; + + public Item(String name, int price) { + this.name = name; + this.price = price; + } + + public int getPrice() { + return price; + } +} diff --git a/src/strategypattern/context/ShoppingCart.java b/src/strategypattern/context/ShoppingCart.java new file mode 100644 index 0000000..665e250 --- /dev/null +++ b/src/strategypattern/context/ShoppingCart.java @@ -0,0 +1,32 @@ +package strategypattern.context; + +import strategypattern.strategy.PaymentStrategy; + +import java.util.ArrayList; +import java.util.List; + +public class ShoppingCart { + + private List items; + private PaymentStrategy paymentStrategy; + + public ShoppingCart() { + this.items = new ArrayList<>(); + } + + public void addItem(Item item) { + this.items.add(item); + } + + public void setPaymentStrategy(PaymentStrategy paymentStrategy) { + this.paymentStrategy = paymentStrategy; + } + + public void pay(){ + int amount = 0; + for (Item item : items) { + amount += item.getPrice(); + } + this.paymentStrategy.pay(amount); + } +} diff --git a/src/strategypattern/strategy/MasterCardStrategy.java b/src/strategypattern/strategy/MasterCardStrategy.java new file mode 100644 index 0000000..6c70a16 --- /dev/null +++ b/src/strategypattern/strategy/MasterCardStrategy.java @@ -0,0 +1,19 @@ +package strategypattern.strategy; + +public class MasterCardStrategy implements PaymentStrategy { + + private String name; + private String cardNumber; + private String cvv; + + public MasterCardStrategy(String name, String cardNumber, String cvv) { + this.name = name; + this.cardNumber = cardNumber; + this.cvv = cvv; + } + + @Override + public void pay(int amount) { + System.out.println(amount + " Won paid using Master Card"); + } +} diff --git a/src/strategypattern/strategy/MobilePayStrategy.java b/src/strategypattern/strategy/MobilePayStrategy.java new file mode 100644 index 0000000..b8e1d3b --- /dev/null +++ b/src/strategypattern/strategy/MobilePayStrategy.java @@ -0,0 +1,17 @@ +package strategypattern.strategy; + +public class MobilePayStrategy implements PaymentStrategy { + + private String email; + private String password; + + public MobilePayStrategy(String email, String password) { + this.email = email; + this.password = password; + } + + @Override + public void pay(int amount) { + System.out.println(amount + " Won paid using Mobile Pay"); + } +} diff --git a/src/strategypattern/strategy/PaymentStrategy.java b/src/strategypattern/strategy/PaymentStrategy.java new file mode 100644 index 0000000..4b3d597 --- /dev/null +++ b/src/strategypattern/strategy/PaymentStrategy.java @@ -0,0 +1,5 @@ +package strategypattern.strategy; + +public interface PaymentStrategy { + void pay(int amount); +} From d45d047ab0d444cba612f5a18139b1a675880cc9 Mon Sep 17 00:00:00 2001 From: Dimo-2562 Date: Fri, 28 Nov 2025 18:57:31 +0900 Subject: [PATCH 2/2] =?UTF-8?q?chore:=20=ED=96=89=EB=8F=99=20=ED=8C=A8?= =?UTF-8?q?=ED=84=B4=20=ED=8C=A8=ED=82=A4=EC=A7=80=20=EA=B5=AC=EC=A1=B0=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/{ => behavior}/statepattern/Client.java | 2 +- src/{ => behavior}/statepattern/LaptopContext.java | 8 ++++---- src/{ => behavior}/statepattern/state/OffState.java | 4 ++-- src/{ => behavior}/statepattern/state/OnState.java | 4 ++-- src/behavior/statepattern/state/PowerState.java | 7 +++++++ src/{ => behavior}/statepattern/state/SavingState.java | 4 ++-- src/{ => behavior}/strategypattern/Client.java | 10 +++++----- src/{ => behavior}/strategypattern/context/Item.java | 2 +- .../strategypattern/context/ShoppingCart.java | 4 ++-- .../strategypattern/strategy/MasterCardStrategy.java | 2 +- .../strategypattern/strategy/MobilePayStrategy.java | 2 +- .../strategypattern/strategy/PaymentStrategy.java | 2 +- src/statepattern/state/PowerState.java | 7 ------- 13 files changed, 29 insertions(+), 29 deletions(-) rename src/{ => behavior}/statepattern/Client.java (90%) rename src/{ => behavior}/statepattern/LaptopContext.java (75%) rename src/{ => behavior}/statepattern/state/OffState.java (82%) rename src/{ => behavior}/statepattern/state/OnState.java (82%) create mode 100644 src/behavior/statepattern/state/PowerState.java rename src/{ => behavior}/statepattern/state/SavingState.java (83%) rename src/{ => behavior}/strategypattern/Client.java (62%) rename src/{ => behavior}/strategypattern/context/Item.java (80%) rename src/{ => behavior}/strategypattern/context/ShoppingCart.java (82%) rename src/{ => behavior}/strategypattern/strategy/MasterCardStrategy.java (87%) rename src/{ => behavior}/strategypattern/strategy/MobilePayStrategy.java (86%) rename src/{ => behavior}/strategypattern/strategy/PaymentStrategy.java (57%) delete mode 100644 src/statepattern/state/PowerState.java diff --git a/src/statepattern/Client.java b/src/behavior/statepattern/Client.java similarity index 90% rename from src/statepattern/Client.java rename to src/behavior/statepattern/Client.java index 0c9344c..7a4fb0c 100644 --- a/src/statepattern/Client.java +++ b/src/behavior/statepattern/Client.java @@ -1,4 +1,4 @@ -package statepattern; +package behavior.statepattern; public class Client { public static void main(String[] args) { diff --git a/src/statepattern/LaptopContext.java b/src/behavior/statepattern/LaptopContext.java similarity index 75% rename from src/statepattern/LaptopContext.java rename to src/behavior/statepattern/LaptopContext.java index 33d87fd..40c2d99 100644 --- a/src/statepattern/LaptopContext.java +++ b/src/behavior/statepattern/LaptopContext.java @@ -1,8 +1,8 @@ -package statepattern; +package behavior.statepattern; -import statepattern.state.OffState; -import statepattern.state.PowerState; -import statepattern.state.SavingState; +import behavior.statepattern.state.OffState; +import behavior.statepattern.state.PowerState; +import behavior.statepattern.state.SavingState; public class LaptopContext { private PowerState powerState; diff --git a/src/statepattern/state/OffState.java b/src/behavior/statepattern/state/OffState.java similarity index 82% rename from src/statepattern/state/OffState.java rename to src/behavior/statepattern/state/OffState.java index 31be078..508220b 100644 --- a/src/statepattern/state/OffState.java +++ b/src/behavior/statepattern/state/OffState.java @@ -1,6 +1,6 @@ -package statepattern.state; +package behavior.statepattern.state; -import statepattern.LaptopContext; +import behavior.statepattern.LaptopContext; public class OffState implements PowerState{ diff --git a/src/statepattern/state/OnState.java b/src/behavior/statepattern/state/OnState.java similarity index 82% rename from src/statepattern/state/OnState.java rename to src/behavior/statepattern/state/OnState.java index dcc66a0..331af5a 100644 --- a/src/statepattern/state/OnState.java +++ b/src/behavior/statepattern/state/OnState.java @@ -1,6 +1,6 @@ -package statepattern.state; +package behavior.statepattern.state; -import statepattern.LaptopContext; +import behavior.statepattern.LaptopContext; public class OnState implements PowerState{ diff --git a/src/behavior/statepattern/state/PowerState.java b/src/behavior/statepattern/state/PowerState.java new file mode 100644 index 0000000..7394b37 --- /dev/null +++ b/src/behavior/statepattern/state/PowerState.java @@ -0,0 +1,7 @@ +package behavior.statepattern.state; + +import behavior.statepattern.LaptopContext; + +public interface PowerState { + void pushPowerButton(LaptopContext context); +} diff --git a/src/statepattern/state/SavingState.java b/src/behavior/statepattern/state/SavingState.java similarity index 83% rename from src/statepattern/state/SavingState.java rename to src/behavior/statepattern/state/SavingState.java index e5316b6..b9bfc55 100644 --- a/src/statepattern/state/SavingState.java +++ b/src/behavior/statepattern/state/SavingState.java @@ -1,6 +1,6 @@ -package statepattern.state; +package behavior.statepattern.state; -import statepattern.LaptopContext; +import behavior.statepattern.LaptopContext; public class SavingState implements PowerState{ diff --git a/src/strategypattern/Client.java b/src/behavior/strategypattern/Client.java similarity index 62% rename from src/strategypattern/Client.java rename to src/behavior/strategypattern/Client.java index ff3eb79..de8b05c 100644 --- a/src/strategypattern/Client.java +++ b/src/behavior/strategypattern/Client.java @@ -1,9 +1,9 @@ -package strategypattern; +package behavior.strategypattern; -import strategypattern.context.Item; -import strategypattern.context.ShoppingCart; -import strategypattern.strategy.MasterCardStrategy; -import strategypattern.strategy.MobilePayStrategy; +import behavior.strategypattern.context.Item; +import behavior.strategypattern.context.ShoppingCart; +import behavior.strategypattern.strategy.MasterCardStrategy; +import behavior.strategypattern.strategy.MobilePayStrategy; public class Client { public static void main(String[] args) { diff --git a/src/strategypattern/context/Item.java b/src/behavior/strategypattern/context/Item.java similarity index 80% rename from src/strategypattern/context/Item.java rename to src/behavior/strategypattern/context/Item.java index 6a67c6f..b53e276 100644 --- a/src/strategypattern/context/Item.java +++ b/src/behavior/strategypattern/context/Item.java @@ -1,4 +1,4 @@ -package strategypattern.context; +package behavior.strategypattern.context; public class Item { diff --git a/src/strategypattern/context/ShoppingCart.java b/src/behavior/strategypattern/context/ShoppingCart.java similarity index 82% rename from src/strategypattern/context/ShoppingCart.java rename to src/behavior/strategypattern/context/ShoppingCart.java index 665e250..691a606 100644 --- a/src/strategypattern/context/ShoppingCart.java +++ b/src/behavior/strategypattern/context/ShoppingCart.java @@ -1,6 +1,6 @@ -package strategypattern.context; +package behavior.strategypattern.context; -import strategypattern.strategy.PaymentStrategy; +import behavior.strategypattern.strategy.PaymentStrategy; import java.util.ArrayList; import java.util.List; diff --git a/src/strategypattern/strategy/MasterCardStrategy.java b/src/behavior/strategypattern/strategy/MasterCardStrategy.java similarity index 87% rename from src/strategypattern/strategy/MasterCardStrategy.java rename to src/behavior/strategypattern/strategy/MasterCardStrategy.java index 6c70a16..01efee7 100644 --- a/src/strategypattern/strategy/MasterCardStrategy.java +++ b/src/behavior/strategypattern/strategy/MasterCardStrategy.java @@ -1,4 +1,4 @@ -package strategypattern.strategy; +package behavior.strategypattern.strategy; public class MasterCardStrategy implements PaymentStrategy { diff --git a/src/strategypattern/strategy/MobilePayStrategy.java b/src/behavior/strategypattern/strategy/MobilePayStrategy.java similarity index 86% rename from src/strategypattern/strategy/MobilePayStrategy.java rename to src/behavior/strategypattern/strategy/MobilePayStrategy.java index b8e1d3b..4ea59f6 100644 --- a/src/strategypattern/strategy/MobilePayStrategy.java +++ b/src/behavior/strategypattern/strategy/MobilePayStrategy.java @@ -1,4 +1,4 @@ -package strategypattern.strategy; +package behavior.strategypattern.strategy; public class MobilePayStrategy implements PaymentStrategy { diff --git a/src/strategypattern/strategy/PaymentStrategy.java b/src/behavior/strategypattern/strategy/PaymentStrategy.java similarity index 57% rename from src/strategypattern/strategy/PaymentStrategy.java rename to src/behavior/strategypattern/strategy/PaymentStrategy.java index 4b3d597..e87995a 100644 --- a/src/strategypattern/strategy/PaymentStrategy.java +++ b/src/behavior/strategypattern/strategy/PaymentStrategy.java @@ -1,4 +1,4 @@ -package strategypattern.strategy; +package behavior.strategypattern.strategy; public interface PaymentStrategy { void pay(int amount); diff --git a/src/statepattern/state/PowerState.java b/src/statepattern/state/PowerState.java deleted file mode 100644 index 63ce698..0000000 --- a/src/statepattern/state/PowerState.java +++ /dev/null @@ -1,7 +0,0 @@ -package statepattern.state; - -import statepattern.LaptopContext; - -public interface PowerState { - void pushPowerButton(LaptopContext context); -}