Suhee Coding Archive
[๋์์ธ ํจํด] ์ ๋ต ํจํด ๋ณธ๋ฌธ
๐ ์ ๋ต ํจํด
์ ์ฑ ํจํด์ด๋ผ๊ณ ๋ ํ๋ฉฐ, ๊ฐ์ฒด์ ํ์๋ฅผ ๋ฐ๊พธ๊ณ ์ถ์ ๊ฒฝ์ฐ '์ง์ ' ์์ ํ์ง ์๊ณ ์ ๋ต์ด๋ผ๊ณ ๋ถ๋ฅด๋ '์บก์ํํ ์๊ณ ๋ฆฌ์ฆ'์ ์ปจํ ์คํธ ์์์ ๋ฐ๊ฟ์ฃผ๋ฉด์ ์ํธ ๊ต์ฒด๊ฐ ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ํจํด์ด๋ค.

// ์์ดํ
์ ์ด๋ LUNACard๋ก ์ฌ๋ ๊ฒ๊ณผ KAKAOCard๋ก ์ฌ๋ ๊ฒ์ ๊ตฌํํ ์์
// ์ผํ ์นดํธ์ ์์ดํ
์ ๋ด์ LUNACard ๋๋ KAKAOCard๋ผ๋ ๋๊ฐ์ ์ ๋ต์ผ๋ก ๊ฒฐ์ ํ๋ ์ฝ๋
import java.text.DecimalFormat;
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("kundolA",100);
Item B = new Item("kundolB",300);
cart.addItem(A);
cart.addItem(B);
// pay by LUNACard
cart.pay(new LUNACardStrategy("kundol@example.com", "pukubababo"));
// pay by KAKAOBank
cart.pay(new KAKAOCardStrategy("Ju hongchul", "123456789", "123", "12/01"));
}
}
/*
400 paid using LUNACard.
400 paid using KAKAOCard.
*/
โ ์ปจํ ์คํธ
ํ๋ก๊ทธ๋๋ฐ์์ ์ปจํ ์คํธ๋ ์ํฉ, ๋งฅ๋ฝ, ๋ฌธ๋งฅ์ ์๋ฏธํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ด๋ ํ ์์ ์ ์๋ฃํ๋๋ฐ ํ์ํ ๋ชจ๋ ๊ด๋ จ ์ ๋ณด๋ฅผ ๋งํ๋ค.
๐ passport ํจํด
์ ๋ต ํจํด์ ํ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก๋ passport๊ฐ ์๋ค.
- ์ธ์ฆ ๋ชจ๋์ ๊ตฌํํ ๋ ์ฐ๋ ๋ฏธ๋ค์จ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ์๋น์ค ๋ด์ ํ์๊ฐ์ ๋ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ธ์ฆํ๋ LocalStrategy ์ ๋ต๊ณผ ํ์ด์ค๋ถ, ๋ค์ด๋ฒ ๋ฑ ๋ค๋ฅธ ์๋น์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ธ์ฆํ๋ OAuth์ ๋ต ๋ฑ์ ์ง์
**์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋ก๊ทธ์ธ์ ํ ์ ์์ง๋ง ๊ฒฐ๊ณผ์ ์ผ๋ก๋ ๋น์ฆ๋์ค ๋ก์ง(๋ก๊ทธ์ธ)์ ๊ฐ๋ค.
'CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [๋์์ธ ํจํด] ํ๋ก์ ํจํด๊ณผ ํ๋ก์ ์๋ฒ (0) | 2022.10.12 |
|---|---|
| [๋์์ธ ํจํด] ์ต์ ๋ฒ ํจํด (0) | 2022.10.12 |
| [๋์์ธ ํจํด] ํฉํ ๋ฆฌ ํจํด (0) | 2022.10.12 |
| [๋์์ธ ํจํด] ์ฑ๊ธํค ํจํด (0) | 2022.10.12 |
| [์๋ฃ๊ตฌ์กฐ] ์ ํ ์๋ฃ ๊ตฌ์กฐ - ์ฐ๊ฒฐ ๋ฆฌ์คํธ / ๋ฐฐ์ด / ๋ฒกํฐ / ์คํ / ํ (1) | 2022.10.05 |