🥞 BE
home

Strategy Pattern

전략 패턴
구현
import java.util.ArrayList; import java.util.List; interface PaymentStrategy { public void pay(int amount); } class KAKAOCardStrategy implements PaymentStrategy { private String name; private String cardNumber; private String cvv; private String dateOfExpiry; public KAKAOCardStrategy(String nm, String ccNum, String cvv, String expiryDate){ this.name = nm; this.cardNumber = ccNum; this.cvv = cvv; this.dateOfExpiry = expiryDate; } @Override public void pay(int amount) { System.out.println(amount +" paid using KAKAOCard."); } } class LUNACardStrategy implements PaymentStrategy { private String emailId; private String password; public LUNACardStrategy(String email, String pwd){ this.emailId = email; this.password = pwd; } @Override public void pay(int amount) { System.out.println(amount + " paid using LUNACard."); } } class Item { private String name; private int price; public Item(String name, int cost){ this.name = name; this.price = cost; } public String getName() { return name; } public int getPrice() { return price; } } class ShoppingCart { List<Item> items; public ShoppingCart(){ this.items = new ArrayList<Item>(); } public void addItem(Item item){ this.items.add(item); } public void removeItem(Item item){ this.items.remove(item); } public int calculateTotal(){ int sum = 0; for(Item item : items){ sum += item.getPrice(); } return sum; } public void pay(PaymentStrategy paymentMethod){ int amount = calculateTotal(); paymentMethod.pay(amount); } } public class HelloWorld{ public static void main(String []args){ ShoppingCart cart = new ShoppingCart(); Item A = new Item("mychuA",100); Item B = new Item("mychuB",300); cart.addItem(A); cart.addItem(B); // pay by LUNACard cart.pay(new LUNACardStrategy("mychu@example.com", "poobao")); // pay by KAKAOBank cart.pay(new KAKAOCardStrategy("Yoon GeonWoo", "123456789", "123", "12/01")); } }
Java
복사