의존성 주입 편집하기
IT위키
편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
29번째 줄: | 29번째 줄: | ||
*의존성은 테스트를 어렵게 한다. | *의존성은 테스트를 어렵게 한다. | ||
==의존성 주입의 장점== | == 의존성 주입의 장점 == | ||
'''클라이언트 관점''' | '''클라이언트 관점''' | ||
{| class="wikitable" | {| class="wikitable" | ||
38번째 줄: | 38번째 줄: | ||
(Reduced Dependencies) | (Reduced Dependencies) | ||
| | | | ||
*컴포넌트의 종속성이 감소하면 변경에 민감하지 않게 됨 | * 컴포넌트의 종속성이 감소하면 변경에 민감하지 않게 됨 | ||
|- | |- | ||
|결합도 감소 | |결합도 감소 | ||
(Reduced coupling) | (Reduced coupling) | ||
| | | | ||
*결합도를 낮추어 주면서 유연성과 확장성을 향상 | * 결합도를 낮추어 주면서 유연성과 확장성을 향상 | ||
|- | |- | ||
|재사용성 증가 | |재사용성 증가 | ||
(More Reusable Code) | (More Reusable Code) | ||
| | | | ||
*인터페이스의 구현 변경 필요한 경우, 코드 변경 없이 해당 구현을 사용하도록 컴포넌트 구성 가능 | * 인터페이스의 구현 변경 필요한 경우, 코드 변경 없이 해당 구현을 사용하도록 컴포넌트 구성 가능 | ||
|} | |} | ||
'''코드 관점''' | '''코드 관점''' | ||
58번째 줄: | 58번째 줄: | ||
(More Testable Code) | (More Testable Code) | ||
| | | | ||
*실제 구현의 테스트로 사용되는 Mock 객체 활용 | * 실제 구현의 테스트로 사용되는 Mock 객체 활용 | ||
*의존성을 컴포넌트에 주입할 수 있는 경우 단위 테스트 편의성을 높여준다 | * 의존성을 컴포넌트에 주입할 수 있는 경우 단위 테스트 편의성을 높여준다 | ||
|- | |- | ||
|코드 가독성 향상 | |코드 가독성 향상 | ||
(More Readable Code) | (More Readable Code) | ||
| | | | ||
*컴포넌트의 종속성을 보다 쉽게 파악할 수 있으므로 코드를 쉽게 읽을 수 있다. | * 컴포넌트의 종속성을 보다 쉽게 파악할 수 있으므로 코드를 쉽게 읽을 수 있다. | ||
|- | |- | ||
|코드 단순화 | |코드 단순화 | ||
Simplify code) | Simplify code) | ||
| | | | ||
*의존 관계 제거와 사용 관점의 단순화로 프로그램 코드 전체의 단순화 | * 의존 관계 제거와 사용 관점의 단순화로 프로그램 코드 전체의 단순화 | ||
|} | |} | ||
81번째 줄: | 81번째 줄: | ||
(Constructor Injection) | (Constructor Injection) | ||
| | | | ||
*필요한 의존성을 모두 포함하는 클래스의 생성자를 만들고 그 생성자를 통한 의존성을 주입 | * 필요한 의존성을 모두 포함하는 클래스의 생성자를 만들고 그 생성자를 통한 의존성을 주입 | ||
|- | |- | ||
|세터(Setter)를 통한 주입 | |세터(Setter)를 통한 주입 | ||
(Method(Setter) Injection) | (Method(Setter) Injection) | ||
| | | | ||
*의존성을 입력받는 Setter 메소드를 만들고 이를 통한 의존성을 주입 | * 의존성을 입력받는 Setter 메소드를 만들고 이를 통한 의존성을 주입 | ||
|- | |- | ||
|인터페이스(Interface)를 통한 주입 | |인터페이스(Interface)를 통한 주입 | ||
(Field Injection) | (Field Injection) | ||
| | | | ||
*의존성을 주입하는 함수를 포함한 인터페이스를 작성 | * 의존성을 주입하는 함수를 포함한 인터페이스를 작성 | ||
*이 인터페이스를 구현하도록 함으로써 실행 시에 이를 통하여 의존성을 주입 | * 이 인터페이스를 구현하도록 함으로써 실행 시에 이를 통하여 의존성을 주입 | ||
|} | |} | ||