의존성 주입(Dependendcy Injection, D.I)
의존성 주입
의존성 주입이란 ?
- 객체가 자신이 의존할 객체를 스스로 만들도록 하는 것이 아니라 외부에서 주입해주는 것을 의미한다.
- 구현에 의존하도록 하는 것이 아니라, 역할에 의존하도록 만드는 것이다.
How?
- 생성자를 통해 특정한 역할을 수행하는 객체를 외부로부터 주입받아 사용한다.
- 의존성 주입의 기반 원리는 추상화와 다형성이다.
- 객체들끼리 강하게 결합 시키지 않고 인터페이스를 통해 느슨한게 결합시킨다.
- 인터페이스에 의존하면 구체적인 구현 객체는 인터페이스를 구현했다는 조건 아래에 자유롭게 교체할 수 있다.
Why?
- 변화와 확장에 유연하다. 즉 객체지향 프로그래밍의 핵심이다.
- 새로운 클래스를 필요에 따라 새롭게 만들지언정, 기존에 작성한 코드들을 수정하지 않아도 된다는 장점.
객체지향 프로그래밍
- 객체 프로그래멩에서의 객체는 자신이 보유한 데이터와 관련된 기능을 자율적으로 처리할 수 있어야 하며, 그러면서도 다른 객체와 유기적인 협력 관계에 참여할 수 있어야 한다.
- 중요한 것은 단일 책임 원칙(Single Responsibility Principle, SRP) 즉, 객체는 오직 하나의 책임만 맡아야 한다는 것이다.