이번 solid 원칙은 'O'에 해당하는 개방폐쇄의 원칙입니다. 확장에는 열려있고 수정에는 닫혀있는 코드 디자인에 대하여 탐구해보도록 하겠습니다. 이전 글에서 solid 원칙의 'S' 인 단일 책임의 원칙을 다뤄보았습니다. 개방 폐쇄의 원칙은 solid 원칙의 두번째 원칙입니다. 소프트웨어의 엔티티(클래스, 모듈, 함수 기타 등등)는 확장을 위해서는 열려있어야하지만, 수정을 위해서는 닫혀있어야 합니다. 해당 원리를 이용함으로써 목표는 해당 모듈의 소스코드를 수정하지 않고도 모듈의 행위를 확장하는 것입니다. 상품에 할인을 적용하는 시나리오를 생각해보겠습니다. 할인 서비스는 지정된 금액을 할인하고 할인된 금액을 되돌려주게 됩니다. 아래의 예제에서는 모든 성인에 대해서 적용하는 한가지 할인에 대한 값만 있다고..