오히려 좋아..

상황이 나쁘게만 흘러가는 것 같을 때 외쳐보자.. .

궁금한 마음으로 포트폴리오 보기

Paradigm/OOP

의존성

junha6316 2021. 9. 28. 22:16

어떤 객체가 협력하기 위해 다른 객체를 필요로 할 때 두 객체 사이의 의존선이 존재

 

의존성은 구현 시점과 실행 시점에 따라 다른 의미를 갖는다.

실행 시점 : 의존하는 객체가 정상적으로 동작하기 위해서는 실해 시에 의존 대상 객체가 반드시 존재

구현 시점 : 의존 대상 객체가 변경  때 의존하는 객체도 변경

 

의존성 : 변경에 의한 영향의 전파 가능성

 

의존성 전이(transitive dependency) 

A 객체가 B 객체에 의존하면 A객체는 B객체가 의존하는 다른 객체에 대해서 의존적이다. 

 

의존성의 종류

직접 의존성: 한 요소가 다른 요소에 직접 의존하는 경우

간접 의존성: 한 다리 건너서 의존하는 경우 의존성 전이에 의해 영향이 전파 되는 경우

 

런타임 의존성: 애플리케이션이 실행되는 시점

컴파일 타임 의존성: 구현 시점의 의존성

 

런타임의 주인공은 객체

컴파일의 주인공은 클래스


어떤 클래스의 인스턴스가 다양한 클래스의 인스턴스와 협력하기 위해선 협력할 인스턴스의 구체적인 클래스를 알아서는 안된다.

 

컨텍스트 독립성: 클래스가 특정한 문맥에 대해 최소한의 가정만으로 이뤄져 있는 상태

자신이 실행될 컨텍스트에 대한 구체적인 정보를 최대한 적제 알아야한다. 

 

의존성 해결을 위한 3가지 방법

1. 생성자 방식 : 객체를 생성하는 시점에서 생성자를 통해 의존성 해결

2. setter 방식 : 객체 생성 후 setter 메서드를 통해 의존성 해결

3. 메서드 인자 방식 : 메서드 실행시 인자를 통해 의존성 해결

 

의존성 자체가 나쁜 게 아니다. 협력을 위해선 의존성이 반드시 존재해야하며 좋은 의존성을 만드는 것이 목표

좋은 의존성이란 재사용성과 관련이있다. 의존성이 다양한 환경에서 재사용할 수 있다면 바람직하다. 

세련된 언어로 의존성이 나쁠 때 결합도가 높다고 하고 아닐때 낮다고 한다.

 

 

 

 

 

 

'Paradigm > OOP' 카테고리의 다른 글

추상클래스와 인터페이스 차이  (0) 2022.08.21
클래스와 객체  (0) 2021.09.29
추상화  (0) 2021.09.28
역할, 책임, 협력, 메세지  (0) 2021.09.28
추상화 매커니즘  (0) 2021.09.28