자원을 직접 명시하지 말고 의존 객체 주입을 사용하라

Gunjoo Ahn·2022년 8월 14일
0
post-thumbnail
post-custom-banner

의존 객체 주입 패턴

인스턴스를 생성할 때, 생성자( 또는 정적 팩터리, 빌더 등)에 필요한 자원을 넘겨주는 방식이 의존 객체 주입이다.

변형으로 생성자에 해당 자원 자체가 아닌 자원 팩터리를 넘겨줄 수 있다.

의존성이 수 천개나 되는 큰 프로젝트에서는 코드가 어지러워지는데, Spring 같은 의존 객체 주입 프레임워크를 사용하는 것이 코드가 어지러운 것을 해소할 수 있다.

💡핵심 정리

클래스가 내부적으로 하나 이상의 자원에 의존하고, 그 자원이 클래스 동작에 영향을 준다면 싱글턴과 정적 유틸리티 클래스는 적합하지 않다. 이 자원들을 클래스가 직접 만들게 해서도 안된다. 대신 필요한 자원이나 그 자원을 만들어주는 팩터리를 생성자에 넘겨주자. 의존 객체 주입이라 하는 이 기법은 클래스의 유연성, 재사용성, 테스트 용이성을 개선해준다.


클래스가 자원을 직접 만들면 안된다. 클래스에서 new로 필요한 객체를 직접 생성하면 강한 결합이 발생한다, 예를 들어, 생성한 자원 클래스 A의 수정이 있으면 해당 자원 클래스를 new로 생성하여 사용하던 클래스 B의 코드의 수정을 해야할 확률이 높다. 이런 식으로 클래스 수정이 다른 클래스 수정으로 전이되면서 코드 유지보수가 점점 어려워지는 것이다.

profile
Backend Developer
post-custom-banner

0개의 댓글