개발을 하며, 객체 지향 프로그래밍(OOP)와 SOLID 원칙에 대해서 많이 들어보았을 것이다. 나 역시 그랬고.최근 모 회사에서 면접을 진행할 때, SOLID 원칙 중 D를 담당하는 DIP(Dependency Inversion Principle)에 대한 꼬리질문이 나오자 제대로 답변을 하지 못했었다. 이번 기회에 DIP 그리고 평소 막연하게만 알고 있었던 의존성 주입(DI)에 대해 공부하고, 정리해 보았다. OOP와 SOLID 원칙?OOP는 이름으로부터 유추할 수 있듯, '코드를 객체 단위로 구조화하는 관점'이다. 캡슐화/추상화/상속/다형성 총 네가지 특징을 가진다.객체 단위 구조화가 이루어지므로, 객체 간 역할이 분리되어 변경 영향 범위가 줄고, 기능 확장과 테스트가 용이해진다. SOLID 원칙은 쉽..