Coupling이란
📌 정의
서로 상호작용하는 시스템들간의 의존성.
의존성은 실질적 의존성과 인위적 의존성으로 나뉠 수 있다.
실직적 의존성
한 시스템이 소비하는 다른 시스템이 기능이나 서비스의 집합.
인위적 의존성
한 시스템이 다른 시스템이 제공하는 기능이나 서비스를 소비하기 위해 필요한 여러 요소들의 집합.
언제나 존재하지만 그 비용은 충분히 감소될 수 있으며 Loose Coupling은 인위적 의존성을 최소한으로 줄이는 구조를 의미한다.
- 언어적 의존성
- 플랫폼 의존성
- API 의존성
🔗 긴밀한 결합(Tight Coupling)
강하게 결합된 객체(Tightly Coupled Object Object)는 다른 오브젝트에 대한 상당히 많은 정보를 필요로 하고, 보통 두 객체간의 인터페이스들에게 서로 높은 의존성을 가지고 있다. 긴밀하게 결합된 애플리케이션에서 하나의 객체를 변경하는 것은 많은 다른 객체들의 변경을 요구한다.
🔓 느슨한 결합(Loose Coupling)
느슨한 결합은 하나의 컴포넌트의 변경이 다른 컴포넌트들의 변경을 요구하는 위험을 줄이는 것을 목적으로 하는 시스템에서 컴포넌트 간의 내부 의존성을 줄이는 것을 추구하는 디자인 목표이다.
Loose Coupling의 강력함
두 객체가 느슨하게 결합되어 있다는 것은, 그 둘이 상호작용을 하긴 하지만 서로에 대해서 서로 잘 모른다는 것을 의미한다.