1. Dependency (의존성)
하나의 클래스가 자신의 멤버변수로 다른 객체를 소유하고 있는 것
2. 의존성 관계
Class A {
B b;
C c;
D d;
public A(){ // composition 관계
b = new B();
}
public A(C c){ // aggregation 관계
this.c = c;
}
public void setD(D d) { // association 관계
this.d = d;
}
}
A와 B는 composition 관계
- B의 instance는 A와 life cycle을 같이 하고 있음 (밀접한 관계 = 일체형)
A와 C는 aggregation 관계
- C의 instance는 외부에서 만들어지기 때문에 A의 life cycle와 전혀 상관이 없음 (느슨한 관계 = 조립형)
A와 D는 association 관계
- aggregation과 차이는 A class가 D의 instance를 선택적으로 가짐 (느슨한 관계 = 조립형)
3. 일체형 종속 (composition)
A a = new A();
4. Dependency Injection (의존성 주입, 종속성 주입)
클래스에 의존성을 주입한다는 의미이지만 이해하기 쉽게 부품 조립, 부품 장착이라고 생각하기
B b = new B();
D d = new D();
a.setD(d); // 의존성 주입
B b = new b();
A a = new A(b); // 의존성 주입
1. Inversion Of Control (제어의 역전)
프로그램의 제어 흐름을 프로그래머가 직접 제어하는 것이 아니라 외부에서 관리하는 것
2. IOC Container
3. DI / IOC
느슨한 결합력을 실현하기 위해 객체의 생성 및 관리 제어를 IOC 컨테이너를 이용해서 DI 서비스를 제공하는 것이 Spring Framework 의 기능