CS

[Java] 강한 결합과 느슨한 결합

KJihun 2023. 11. 29. 16:57
728x90

 

 

강한 결합 (Tight Coupling)


코드나 모듈간의 의존성이 높은 상태

하나의 모듈이 다른 모듈에 너무 의존적이며, 변경 발생 시 여러 부분에 영향을 줄 수 있는 상황

하나를 수정하면 다른 것들도 함께 수정해야 할 수 있다.

코드의 재사용성과 확장성이 떨어지게 된다.

 


느슨한 결합 (Loose Coupling)


모듈이 서로 독립적이며, 하나의 모듈이 다른 모듈과 상대적으로 낮은 수준의 의존성을 가지는 상태

각 모듈이 자신의 역할을 수행하면서 다른 모듈과의 상호 작용을 최소화하는 것을 의미한다.

변경 발생 시 해당 모듈만 수정하면 되며, 다른 모듈에 영향을 덜 주고 독립적으로 변경할 수 있는 유연성을 제공한다.

코드의 유지보수성과 확장성을 향상시킬 수 있다.

 

 

느슨한 결합을 구현하기 위한 방법

 

1. 인터페이스

인터페이스 사용 시, 클래스는 해당 인터페이스에만 의존하고 구체적인 구현에는 느슨하게 연결된다.

 

2. 의존성 주입(DI; Dependency Injection)
의존성 주입은 객체 간의 의존성을 외부에서 주입하는 디자인 패턴이다.

객체가 직접 의존하는 객체를 생성하지 않고, 외부에서 필요한 의존성을 제공아 객체 간의 결합을 낮출 수 있다.

 

 

Spring은 의존성 주입과 관련된 컨테이너를 제공하여 느슨한 결합을 유지하고 객체 간의 관계를 관리한다.