Suhee Coding Archive

[๋””์ž์ธ ํŒจํ„ด] ์ „๋žต ํŒจํ„ด ๋ณธ๋ฌธ

CS

[๋””์ž์ธ ํŒจํ„ด] ์ „๋žต ํŒจํ„ด

sueee_y 2022. 10. 12. 13:45

๐Ÿ‘‰ ์ „๋žต ํŒจํ„ด

์ •์ฑ…ํŒจํ„ด์ด๋ผ๊ณ ๋„ ํ•˜๋ฉฐ, ๊ฐ์ฒด์˜ ํ–‰์œ„๋ฅผ ๋ฐ”๊พธ๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ '์ง์ ‘' ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ  ์ „๋žต์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” '์บก์Аํ™”ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜'์„ ์ปจํ…์ŠคํŠธ ์•ˆ์—์„œ ๋ฐ”๊ฟ”์ฃผ๋ฉด์„œ ์ƒํ˜ธ ๊ต์ฒด๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ํŒจํ„ด์ด๋‹ค.

 

// ์•„์ดํ…œ์„ ์‚ด๋•Œ 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์ „๋žต ๋“ฑ์„ ์ง€์›

**์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋กœ๊ทธ์ธ์„ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฒฐ๊ณผ์ ์œผ๋กœ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(๋กœ๊ทธ์ธ)์€ ๊ฐ™๋‹ค.

Comments