package com.haenin.section02.openclosed.problem;

/* 설명.
*   개방-폐쇄 원칙(Open-Cloded Principle) -"확장할 때 기존 코드를 수정하며 확장되면 안돼!"
*   - 소프트웨어의 엔티티(클래스, 모듈, 함수 등)는 확장에 대해서는 열려 있어야 하지만,
*     변경에 대해서ㅓ는 닫혀 있어야 한다.
*   */
public class Application {
    public static void main(String[] args) {
        BadPaymentProcessor badProcessor = new BadPaymentProcessor();
        badProcessor.processPayment("credit"); // 신용카드 결제
        badProcessor.processPayment("kakao");  // 카카오페이 결제
    }
}

package com.haenin.section02.openclosed.problem;

public class BadPaymentProcessor {
    public void processPayment(String paymentType){
        if(paymentType.equals("credit")){
            System.out.println("신용카드로 결제를 처리합니다.");
        }else if (paymentType.equals("kakao")){
            System.out.println("카카오페이로 결제를 처리합니다.");
        }
        /* 설명. 새로운 결제 수단을 추가하려면 결제 관련 모든 코드가 있는
        *       이 클래스를 수정해야 한다. -> 변경에 대해서 닫혀있는 코드*/
    }
}