DevBoi

[Spring] 인터페이스와 느슨한 결합력 본문

Develop/[Spring]

[Spring] 인터페이스와 느슨한 결합력

HiSmith 2022. 2. 21. 16:23
반응형

특정 서비스에 대한 수정이 발생한다고 생각해보자

소스코드에서 가장 큰 고려사항은, 결합력에 관련된 내용인데, 결합력이 어떤 것이냐....

 

결합도가 높은 소스코드의 경우

A.class, B.class라고 예를 들어보겠다.

A.class가 변경이 발생되면, B.class도 무조건 수정이 되어야 한다.

 

하지만 결합도가 낮은경우, A.class가 변경이 발생했다고 한들, B.class에 영향도 없고 변경도 필요없다.

이러한 개념에서 나온것이 인터페이스라는 것이다.

 

결합도가 높은 시스템

A a = new A();

a.setX();

 

결합도가 낮은 시스템

X x = 외부파일.class

x.setX();

 

X는 특정 공통 소스들을 구현하기 위한 인터페이스이고,

A는 그냥 객체라고 생각하면 된다.

 

결합도가 높을 경우, A가 변경이 발생한다면 A를 사용하는 곳마다 다 수정을 해줘야한다.

그런데 인터페이스를 사용하므로써 특정 클래스 이름을 숨기고,

해당 인터페이스를 구현하는 구현체들을 바꿔가면서 호출을 한다면?

 

신규로 구현된 기능 또는 기존 소스에 대해서는 별도로 변경을 할 필요가 없다.

단순히 설정 파일 변경으로만 해당 구현체를 바꿔줄수 있기 때문이다.

 

스프링에서는 이런 작업을 해주는 것이 있다는것을 알아두자

반응형

'Develop > [Spring]' 카테고리의 다른 글

[Spring] IOC 란?  (0) 2022.02.21
[Spring] DI란?  (0) 2022.02.21
[스프링] 컴포넌트 스캔 동작과정  (0) 2022.02.20
[스프링] 스프링의 동작과정  (0) 2022.02.18
1. Spring boot 기초 개념 익히기  (0) 2022.02.08