의존성 이란?
의존하고 있는 대상의 변경에 영향을 받을 수 있는 가능성
의존성 방식
1) 생성자를 이용한 방식
1
|
A a = new A(new B());
|
cs |
2) setter를 이용한 방식
1
2
|
A a = new A();
a.setB(new B());
|
cs |
3) method를 이용한 방식
1
2
|
A a = new A();
a.testMethod(new B())
|
cs |
4) 생성자 + setter를 이용한 방식
1
2
|
A a = new A(new B());
a.setC(new C());
|
cs |
new는 해롭다
new 연산자를 잘못 사용하면 클래스 사이의 결합도가 극단적으로 증가한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public class Movie {
private DiscountPolicy discountPolicy;
public Movie(String title, Duration runningTime, Money fee) {
this.discountPolicy = new AmountDiscountPolicy(Money.wons(800)),
new SequenceCondition(1),
new SequenceCondition(10),
......);
}
}
|
cs |
- Movie 클래스가 구체 클래스(AmountDiscountPolicy)를 생성하는데 필요한 정보를 알아야 되기 때문에 결합도가 증가
1
2
3
4
5
6
7
8
|
public class Movie {
private DiscountPolicy discountPolicy;
public Movie(DiscountPolicy discountPolicy) {
this.discountPolicy = discountPolicy;
}
}
|
cs |
- Movie 클래스가 구체 클래스를 생성하는데 필요한 정보를 몰라도 된다
결합도란?
결합도는 어떤 모듈이 다른 모듈에 의존 정도를 말한다.
강한 결합도
- 다양한 환경에서 클래스를 재사용할 수 없는 의존성
약한 결합도
- 다양한 환경에서 클래스를 재사용할 수 있는 의존성
Comment