의존성에는 크게 Class 사이 의존성과 Package 사이 의존성으로 나눌 수 있다.
Class 사이 의존성
1. 연관관계 (Assosication)
아래와 같이 A 클래스가 B라는 클래스를 객체 참조하는 경우를 말한다.
연관관계는 A 클래스에서 B 클래스로 갈 수 있는 영구적인 경로가 있다고 볼 수 있다.
class A {
private val b:B = B()
}
2. 의존관계 (Dependency)
A클래스의 파라미터나 리턴타입에 B 클래스 타입이 나오거나, 메소드에서 B 클래스 타입의 인스턴스를 생성하는 경우이다. 의존관계는 협력하는 B 클래스와 일시적인 관계를 맺는 경우이다.
class A {
fun b(): B {
return B()
}
}
3. 상속관계 (Inharitance)
B 클래스의 구현을 A가 상속 받는 관계이다.
B가 변경될 경우 A의 내용도 바뀐다.
class A : B { }
4. 실체화관계 (Realization)
인터페이스를 implement하는 관계이다.
상속관계와 실체화관계의 차이는 상속은 상속받은 클래스의 내용이 영향을 받을 수 있는 반면, 실체화 관계는 인터페이스의 오퍼레이션 시그니처가 바뀌었을 경우에만 영향을 받는다.
class A : B { }
728x90
반응형
'Computer Science > Programming' 카테고리의 다른 글
[Docker] VM과 Container (0) | 2021.09.25 |
---|---|
Web Server와 Web Application Server ( Static Pages / 정적 웹 페이지 / Dynamic Pages / 동적 웹 페이지 / 웹 서버 / 웹 앱 서버 / WAS / Container / Servlet / Web Container / Servlet Container) (0) | 2021.09.17 |
Clean Architecture (0) | 2021.08.31 |
[Window] 환경변수 설정 (0) | 2021.08.13 |
정적 타입 지정 vs 동적 타입 지정 (0) | 2021.03.29 |
댓글