객체지향 프로그래밍을 설계할 때 아래와 같이 5가지 원칙을 지켜야한다라는 말을 들어본 적 있을 것이다.단일 책임 원칙(SRP)개방 폐쇄 원칙(OCP)리스코프 치환 원칙(LSP)인터페이스 분리 원칙(ISP)의존 역전 원칙(DIP)CS를 공부하면서 배웠을 SOLID 원칙인데 솔직히 이론적인 설명만 읽어서는 온전히 이해가 되지 않는 원칙들이 몇 개 있었다. 이번에 김영한님의 spring 강의를 들으면서 개방 폐쇄 원칙을 잘 지킨 사례를 발견하여 블로그에 기록해두려 한다.개방 폐쇄 원칙(OCP)이론적인 설명은 다음과 같다.코드의 수정에는 폐쇄되어 있지만 확장에는 개방되어 있어야 한다. 즉, 유지 보수할 때 코드의 수정은 최대한 지양하면서 확장은 용이하게 할 수 있도록 설계해야 한다. 언뜻 이해되는 듯 하면서도 ..