나는 클래스를 리팩터링하고 그것에 새로운 의존성을 추가하고있다. 클래스는 현재 생성자에서 기존 종속성을 사용하고 있습니다. 일관성을 위해 매개 변수를 생성자에 추가합니다.
물론 유닛 테스트를위한 몇 가지 하위 클래스가 있습니다. 이제는 모든 생성자를 일치 시키려고하는 게임을하고 있습니다. 연령대가 다르게 보입니다.
setter에서 속성을 사용하는 것이 종속성을 얻는 더 좋은 방법이라고 생각합니다. 삽입 된 종속성은 클래스의 인스턴스를 구성하기위한 인터페이스의 일부 여야한다고 생각하지 않습니다. 의존성을 추가하면 이제는 모든 사용자 (하위 클래스와 직접 인스턴스를 생성 한 모든 사용자)가 갑자기 그것을 알 수 있습니다. 그것은 캡슐화의 휴식과 같은 느낌.생성자 또는 속성 설정자를 통한 종속성 주입?
여기는 기존 코드의 패턴이 아닌 것 같아요. 그래서 나는 일반적인 합의가 무엇인지, 생성자와 프로퍼티의 장단점에 대해 알아 보려고합니다. 속성 설정자를 사용하고 있습니까?
Null Object 패턴을 사용하고 생성자에 대한 참조가 필요하므로 많은 경우에 적합하다고 생각합니다. 이렇게하면 모든 null 검사와 증가 된 순환 복잡성을 피할 수 있습니다. –
@ 마크 : 좋은 지적. 그러나 문제는 기존 클래스에 종속성을 추가하는 것이 었습니다. 그런 다음 인수가없는 생성자를 유지하면 이전 버전과의 호환성을 유지할 수 있습니다. – sleske
의존성이 작동하는 데는 언제 필요하지만 그 의존성의 기본 주입으로 충분합니다. 그러면 종속성이 속성이나 생성자 오버로드에 의해 "대체 가능"해야합니까? –