SRP: 단일 책임 원칙(single responsibility principle)
OCP: 개방-폐쇄 원칙 (Open/closed principle)
OCP 는 관리가능하고 재사용 가능한 코드를 만드는 기반이며
OCP 를 가능케 하는 중요 메커니즘은 추상화와 다형성이다.
LSP: 리스코프 치환 원칙 (Liskov substitution principle)
ISP: 인터페이스 분리 원칙 (Interface segregation principle)
DIP: 의존관계 역전 원칙 (Dependency inversion principle)
다형성만으론 OCP 와 DIP 를 지킬 수 없다.
관심사를 분리하여 객체를 생성하고, 의존관계를 맺어주는 별도의 조립, 설정자가 필요하다.
(Config 역할 : 의존성 주입 )
의존성 주입은 를 해당 원칙을 준수할 수 있게 해주는 방법 중 하나다.
스프링 컨테이너의 역할 : 의존성 주입
DI, IOC 컨테이너가 필요한 이유