SOLID 원칙

객체 지향 언어로 프로그래밍을 하는 사람이라면 SOLID 원칙을 들어본 적이 있을 것이다. SRP, OCP, LSP, ISP, DIP 다섯 가지 원칙의 앞글자를 따서 부르는 것인데, 설명들은 많이 있지만 실제 프로그래밍을 사용할 때 기억하고 그 원칙을 지키려면 잘 기억하고 있어야 할 것 같아서 짧게 정리해보려고 한다. 각 원칙을 한 문장 내외로 축약할 것이다.
SRP(Single Resposibilitiy Principle, 단일 책임 원칙): 하나의 클래스와 그것을 구성하는 각각의 메서드들은 각각 하나의 책임을 가져야 한다.
OCP(Open-Close principle, 열림 닫힘 원칙): 확장은 가능하지만 수정은 지양한다.(확장에 열려 있고 수정에 닫혀 있다.
LSP(Liskov Substitution Principle, 리스코프 치환 원칙): 서브클래스는 자신의 기반 타입으로 교체가 가능해야 한다. 서브 클래스는 수퍼 클래스가 수행할 수 있는 모든 행위를 수행할 수 있어야 한다.
ISP(Interface Separation Principle, 인터페이스 분리 원칙): 클래스는 자신이 사용하지 않는 인터페이스를 구현하지 말아야 한다. 그러므로 인터페이스는 가급적 작게 분리하는 것이 좋다.
DIP(Dipendency Inversion Principle, 의존성 역전 원칙): 의존 관계를 맺어야 한다면, 변하기 쉬운 것보다 변하기 어려운 것에 의존해야 한다. 즉, 자주 변하는 구체적인 것보다 자주 변하지 않는 추상적인 것에 의존해야 한다.