SRP 단일 책임 원칙

Single Responsibility Principle

OCP 개방-폐쇄 원칙

Open/Closed Principle

코드를 변경하지 않으면서 확장을 어떻게 해야하는가? 정답은 다형성이다.

//Car car = new K3("K3 자동차");
Car car = new Sonata("쏘나타");

뭔가 이상하다. 분명 변경에는 닫혀있어야한다고 했는데, K3에서 Sonata로 변경한데 있어 주석을 통해 코드를 변경했다. 다형성을 사용했는데도 코드를 변경함으로써 OCP 원칙을 위반하고 말았다.

그럼 어떻게 해야할까? 이를 해결하기위해 객체 생성, 관계수립을 해주는 설정자가 필요하다.

LSP 리스코프 치환 원칙

Liskov substitution principle

ISP 인터페이스 분리 원칙