는 일반적인 문제입니다. 왜 컨테이너 ()를 모든 클래스에 직접 주입하지 않겠습니까? 이것은 생성자를 크게 단순화하지만 상당한 단점이 있습니다. 본질적으로 컨테이너를 영광스러운 정적 공장으로 바꿉니다.
영광스러운 정적 및 통제 역전 (IOC) 문제
컨테이너를 서비스 로케이터로 사용하면 글로벌 정적 액세스 포인트처럼 작동합니다. 이는 단일 책임 원칙을 위반하여 테스트 및 유지 관리를 더욱 어렵게 만듭니다. 클래스는 컨테이너의 구현과 밀접하게 결합되어 유연성과 재사용을 방해합니다.
외관 서비스와 함께 리팩토링 <code>public MyClass(Container con, SomeClass1 obj1, SomeClass2 obj2, ... )</code>
생성자 주입의 강점은 단일 책임 원칙의 위반을 강조하는 능력에 있습니다. 생성자가 다루기 어려워지면 리팩토링을위한 명확한 신호입니다. 이 솔루션은 종종 외관 서비스를 만드는 것입니다.
Facade Services는 더 높은 수준의 더 추상적 인 인터페이스를 소개합니다. 이 인터페이스는 수많은 세밀한 종속성과 상호 작용하는 복잡성을 숨 깁니다. 이것은 더 깨끗하고 관리하기 쉬운 코드를 촉진하고 테스트 가능성을 향상시킵니다