2011-09-13 4 views
1

간략하게 설명 할 수 있습니까? 주로 공장 디자인 패턴의 종속성 주입과 다른 점은 무엇입니까?팩토리 디자인 패턴의 종속성 주입과 주로 다른 점은 무엇입니까?

추가적으로 코드 예제를 통해 매우 간단하게 차이를 보여줄 수 있습니까?

감사

+0

종속성 주입 의미론은 각 프레임 워크마다 다르며 쉽게 설명 할 수 있지만 기본적으로 사용자가 인스턴스화를 정의하는 코드입니다. [공장 패턴] (http://en.wikipedia.org/wiki/Factory_method_pattern) 코드 샘플은 검색 엔진을 사용하여 쉽게 찾을 수 있습니다. 또한 많은 ** DI ** 프레임 워크는 ** Factory 패턴 **과 같은 생성 패턴에 크게 의존합니다. –

+0

[DI와 팩토리 패턴의 차이점은 무엇입니까?] (http://stackoverflow.com/questions/2598659/whats-the-difference-between-d-and-factory-patterns) –

답변

2

Factory (또는 다른 Creation 패턴)를 사용하면 호출자는 객체를 가져 오는 방법을 알고 있어야하며이를 사용하기 전에 객체를 "명시 적으로"요청해야합니다.

Car car = CarFactory.getCarByModel(LUXURY); 

DI를 사용할 때 반면, 책임 원하는 객체 (이미 정의 된 설정을 읽어) 객체를 생성하고 그것을 사용할 수 있도록하는 방법을 알고 일부 외부 (컨테이너 주로) 단체에 위임 통과 발신자가 자동으로.

Car car = getCar(); 
void setCar(Car car){..} // container sets the car fromoutside 
0

같은 목표는 당신이 DI 당신은 당신을 위해 일을 할 기존 DI 프레임 워크를 사용하는 반면 코드를 작성해야 팩토리 디자인 패턴이있어 간단하게 구성 할 두 패턴 달성 의존성의. 팩토리 패턴을 사용하면 클래스를위한 팩토리를 작성해야합니다.

+0

의존성 주입은 클래스를 디자인하고 컨테이너가 필요하지 않습니다. 컨테이너는 객체 그래프를 작성하는 편리한 방법 중 하나입니다. – ColinD

2

팩토리 패턴은 일반적으로 복잡한 인스턴스화 논리를 사용하여 객체의 인스턴스를 반복적으로 만드는 데 유용합니다. 이렇게하면 클래스 은 공장의을 알고 인스턴스를 요청합니다.

의존성 주입는 지금까지 수업에 관한 한 완전히을 추상화 인스턴스화 로직에 한 단계 더 간다. 주의 깊게 고려해야 할 모든 코드는 어디에서 왔는지 걱정하지 않고 필요한 종속성을 선언하는 것입니다.

자세한 내용은 Inversion of Control Containers and the Dependency Injection pattern을 참조하십시오.

관련 문제