diff --git a/oop-in-spring/practice/design-pattern/strategyPattern/README.md b/oop-in-spring/practice/design-pattern/strategyPattern/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/oop-in-spring/practice/design-pattern/strategyPattern/after/Calculator.java b/oop-in-spring/practice/design-pattern/strategyPattern/after/Calculator.java new file mode 100644 index 000000000..23600e19c --- /dev/null +++ b/oop-in-spring/practice/design-pattern/strategyPattern/after/Calculator.java @@ -0,0 +1,20 @@ +package strategyPattern.after; + +import java.util.List; + +public class Calculator { + + private DiscountStrategy discountStrategy; + + public Calculator(DiscountStrategy discountStrategy){ + this.discountStrategy = discountStrategy; + } + + public int calculate(List items){ + int sum = 0; + for (Item item : items){ + sum += discountStrategy.getDiscountPrice(item); + } + return sum; + } +} \ No newline at end of file diff --git a/oop-in-spring/practice/design-pattern/strategyPattern/after/DiscountStrategy.java b/oop-in-spring/practice/design-pattern/strategyPattern/after/DiscountStrategy.java new file mode 100644 index 000000000..6e8505d8c --- /dev/null +++ b/oop-in-spring/practice/design-pattern/strategyPattern/after/DiscountStrategy.java @@ -0,0 +1,5 @@ +package strategyPattern.after; + +public interface DiscountStrategy { + int getDiscountPrice(Item item); +} diff --git a/oop-in-spring/practice/design-pattern/strategyPattern/after/FirstGuestDiscountStrategy.java b/oop-in-spring/practice/design-pattern/strategyPattern/after/FirstGuestDiscountStrategy.java new file mode 100644 index 000000000..64009f575 --- /dev/null +++ b/oop-in-spring/practice/design-pattern/strategyPattern/after/FirstGuestDiscountStrategy.java @@ -0,0 +1,9 @@ +package strategyPattern.after; + +public class FirstGuestDiscountStrategy implements DiscountStrategy{ + + @Override + public int getDiscountPrice(Item item) { + return (int) (item.getPrice() * 0.9); + } +} diff --git a/oop-in-spring/practice/design-pattern/strategyPattern/after/Item.java b/oop-in-spring/practice/design-pattern/strategyPattern/after/Item.java new file mode 100644 index 000000000..62508cd7f --- /dev/null +++ b/oop-in-spring/practice/design-pattern/strategyPattern/after/Item.java @@ -0,0 +1,13 @@ +package strategyPattern.after; + +public class Item { + private int price; + + public int getPrice() { + return price; + } + + public void setPrice(int price) { + this.price = price; + } +} diff --git a/oop-in-spring/practice/design-pattern/strategyPattern/after/LastGuestDiscountStrategy.java b/oop-in-spring/practice/design-pattern/strategyPattern/after/LastGuestDiscountStrategy.java new file mode 100644 index 000000000..06dc415e2 --- /dev/null +++ b/oop-in-spring/practice/design-pattern/strategyPattern/after/LastGuestDiscountStrategy.java @@ -0,0 +1,8 @@ +package strategyPattern.after; + +public class LastGuestDiscountStrategy implements DiscountStrategy { + @Override + public int getDiscountPrice(Item item) { + return (int) (item.getPrice() * 0.5); + } +} diff --git a/oop-in-spring/practice/design-pattern/strategyPattern/after/StrategyMain.java b/oop-in-spring/practice/design-pattern/strategyPattern/after/StrategyMain.java new file mode 100644 index 000000000..53a37881c --- /dev/null +++ b/oop-in-spring/practice/design-pattern/strategyPattern/after/StrategyMain.java @@ -0,0 +1,30 @@ +package strategyPattern.after; + +import java.util.List; + +public class StrategyMain { + + private DiscountStrategy strategy; + private List items; + + public static void main(String[] args) { + + } + + public void onFirstGuestButtonClick(){ + // 첫 손님 할인 버튼 누를 때 객체 생성 + strategy = new FirstGuestDiscountStrategy(); + } + + public void onLastGuestButtonClick(){ + // 마지막 손님 대폭 할인 버튼 누를 때 객체 생성 + strategy = new LastGuestDiscountStrategy(); + } + + public void onCalculationButtonClick(){ + // 계산 버튼 누를 때 실행 + Calculator cal = new Calculator(strategy); + int price = cal.calculate(items); + + } +} diff --git a/oop-in-spring/practice/design-pattern/strategyPattern/before/Calculator.java b/oop-in-spring/practice/design-pattern/strategyPattern/before/Calculator.java new file mode 100644 index 000000000..d1abbd686 --- /dev/null +++ b/oop-in-spring/practice/design-pattern/strategyPattern/before/Calculator.java @@ -0,0 +1,17 @@ +package strategyPattern.before; + +public class Calculator { + public int calculate(boolean firstGuest, List items){ + int sum = 0; + for (Item item : items){ + if(firstGuest) { + sum += (int)(item.getPrice()*0.9); + } else if(!item.isFresh()) { + sum += (int)(item.getPrice()*0.8); + } else { + sum += item.getPrice(); + } + } + return sum; + } +} \ No newline at end of file