종속성 주입에 관한 질문이 있습니다. 확인공장 패턴 및 종속성 주입에 대한 Demeter의 법
private HttpService httpService;
...
List<WebGetTask> list = new ArrayList<WebGetTask>();
for(...)
{
list.add(new WebGetTask(httpService));
}
...
:
는 WebGetTaskWebGetTask이 HttpService를
나쁜 코드 1 코드에 대한 의존성을 필요, 내가 가 호출 클래스를 생성하고 싶은 말은.
private WebGetTaskFactory webGetTaskFactory;
...
List<WebGetTask> list = new ArrayList<WebGetTask>();
for(...)
{
list.add(webGetTaskFactory.newTask());
}
...
내가이 더 나은 생각 때문에 : 나는 새로운 WebGetTask의 생성을 제외하고, HTTPService를 주입되어 있지만 사용하지 않기 때문에이
확인 나쁜 코드 2 코드, 나쁜 알고 우리는 하지만 ... 하지만 ..
내가 서있어 곳에서, 내가 WebGetTaskFactory 우리는 여전히 HttpService를하고 일을하지 아무것도 주입하는 것을 볼 수 있습니다 공장을 사용 새로운 WebGetTask 그래서
창조의 목적을 제외하고 그것을 내 문제는 내가 팩토리 클래스 (WebGetTaskFactory)를 설계 어떻게 입니다 을 요약하자면, 작성한 새로운 객체 (WebGetTask) 새로운 객체 종속성을 필요로 할 때 (HttpService) 단순히 그들의 의존성 (HttpService) 주입 및 전달없이 그들의 생성자에? 또는 오히려, 이것을하는 방법입니까? 그렇다면 모두 좋고, 그렇지 않다면 DI와 공장 패턴을 올바르게 사용하는 방법을 알려주십시오. 덕분에 .
. webGetTaskFactory 내에서 httpService를 사용하지 않는 것에 대해 걱정했습니다. 그래서 "webGetTaskFactory"에 "httpService"객체를 삽입하고, "webGetTaskFactory"는 새로운 "webGetTask"를 생성 할 때만 "httpService"를 사용합니다. 그리고 이것은 괜찮습니다. 시원한. 이것을하기위한 "텍스트 북"예제가 더 있습니까? 또는 생성자에 대한 특정 종속성이 필요한 객체를 만드는 가장 일반적인 방법입니까? –
생각해 보면 공장에서는 "런타임 종속성 주입"을 수행합니다. 디자인 타임이 아닌 런타임에 동적으로 생성 된 개체에 대한 종속성 주입 패턴을 따르려면 자연스러운 방법입니다. –