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("카카오페이로 결제를 처리합니다.");
}
/* 설명. 새로운 결제 수단을 추가하려면 결제 관련 모든 코드가 있는
* 이 클래스를 수정해야 한다. -> 변경에 대해서 닫혀있는 코드*/
}
}