목차
반응형
의존성이란?
- 변경에 의한 영향을 받는 경향
- B가 변경될때 A도 함께 변경 → A가 B에 의존하고있다.
클래스 의존성
Association (연관관계)
class A {
private B b;
}
Dependency(의존관계)
class A {
public B method(B b) {
return new B();
}
}
Inheritance(상속관계)
class A extends B {
}
Realization(실체화 관계)
class A implements B {
}
패키지 의존성
- 패키지에 포함된 클래스 사이의 의존성
- 예를들어 A패키지에서 클래스에서 B패키지에 있는 클래스에 의존성이 있다면 패키지 의존성이 존재한다.
좋은 의존성은?
1. 양방향 의존성을 피하라!
Bi-Directional(양방향)
- A가 바뀔때 B에 영향을 받을 수 있고 수정 시 항상 A와 B의 상태를 동기화 시켜줘야 한다.
- 성능이슈가 발생할 수 있다.
class A {
private B b;
public void setA(B b) {
this.b = b;
this.b.set(this);
}
}
class B {
private A a;
public void setA(A a) {
this.a = a;
}
}
Uni-Directional(단방향)
class A {
private B b;
public void setA(B b) {
this.b = b;
}
}
class B {
}
2. 다중성이 적은 방향(Many-To-One)을 선택하라!
One-To-Many(일대다)
class A {
private Collection<B> bList;
}
class B {
}
Many-To-One(다대일)
class A {
}
class B {
private A a;
}
3. 의존성이 필요없다면 제거하라!
Uni-Directional(단방향)
class A {
private B b;
}
None(없음)
class A {
}
class B {
}
4. 패키지 사이의 의존성 사이클을 제거하라!
패키지도 단방향으로 설계
반응형
'DDD' 카테고리의 다른 글
엔티티(Entity)와 밸류(Value)란? (0) | 2021.09.14 |
---|---|
BOUNDED CONTEXT 간 통합 (0) | 2021.09.14 |
BOUNDED CONTEXT 간 관계 (0) | 2021.09.14 |
애그리거트(Aggregate)란? (0) | 2021.09.13 |
도메인 모델과 BOUNDED CONTEXT란? (0) | 2021.09.13 |
반응형
의존성이란?
- 변경에 의한 영향을 받는 경향
- B가 변경될때 A도 함께 변경 → A가 B에 의존하고있다.
클래스 의존성
Association (연관관계)
class A {
private B b;
}
Dependency(의존관계)
class A {
public B method(B b) {
return new B();
}
}
Inheritance(상속관계)
class A extends B {
}
Realization(실체화 관계)
class A implements B {
}
패키지 의존성
- 패키지에 포함된 클래스 사이의 의존성
- 예를들어 A패키지에서 클래스에서 B패키지에 있는 클래스에 의존성이 있다면 패키지 의존성이 존재한다.
좋은 의존성은?
1. 양방향 의존성을 피하라!
Bi-Directional(양방향)
- A가 바뀔때 B에 영향을 받을 수 있고 수정 시 항상 A와 B의 상태를 동기화 시켜줘야 한다.
- 성능이슈가 발생할 수 있다.
class A {
private B b;
public void setA(B b) {
this.b = b;
this.b.set(this);
}
}
class B {
private A a;
public void setA(A a) {
this.a = a;
}
}
Uni-Directional(단방향)
class A {
private B b;
public void setA(B b) {
this.b = b;
}
}
class B {
}
2. 다중성이 적은 방향(Many-To-One)을 선택하라!
One-To-Many(일대다)
class A {
private Collection<B> bList;
}
class B {
}
Many-To-One(다대일)
class A {
}
class B {
private A a;
}
3. 의존성이 필요없다면 제거하라!
Uni-Directional(단방향)
class A {
private B b;
}
None(없음)
class A {
}
class B {
}
4. 패키지 사이의 의존성 사이클을 제거하라!
패키지도 단방향으로 설계
반응형
'DDD' 카테고리의 다른 글
엔티티(Entity)와 밸류(Value)란? (0) | 2021.09.14 |
---|---|
BOUNDED CONTEXT 간 통합 (0) | 2021.09.14 |
BOUNDED CONTEXT 간 관계 (0) | 2021.09.14 |
애그리거트(Aggregate)란? (0) | 2021.09.13 |
도메인 모델과 BOUNDED CONTEXT란? (0) | 2021.09.13 |