개방 폐쇄 원칙(Open-Close Principle, OCP) 정의 소프트웨어의 구성요소(컴포넌트, 클래스, 모듈, 함수 등)는 확장에는 열려있고, 변경에는 닫혀있어야 한다. 확장에는 열려있어야 한다 새로운 기능을 추가하거나, 새로운 동작을 추가하는 등의 확장이 가능해야 한다. 변경에는 닫혀있어야 한다 새로운 기능을 추가하거나, 새로운 동작을 추가할 때, 기존 코드를 수정하지 않아야 한다. 적용 첫번째 시나리오 아무개 보험회사에서 건강 보험 을 판매한다. InsuranceDiscountCalculator를 통해서 보험 할인율을 계산한다. VIP 고객은 25% 할인을, 일반 고객은 10% 할인을 받는다. // 고객 프로필 public class HealthInsuranceCustomerProfile { ..