본문 바로가기
back-end/JAVA

41) 인터페이스의 장점1

by 모두의 향연 2021. 6. 24.
728x90
반응형

41) 인터페이스의 장점1

 

1. 장점

  • 두 대상(객체) 간의 '연결, 대화, 소통'을 돕는 '중간 역할'을 한다.

: interface=inter(~사이에)+face(얼굴, 대상)

인터페이스

 

 

복잡한 기계가 있다고 하자. 사람이 기계를 보고 조작하려면 쉽지 않다. 그래서 껍데기를 씌어서 사람이 이용하기 쉽도록 하는 것이 인터페이스다. 사람이 직접 기계를 조작하는 것보다 사람이 사용하기 편한 인터페이스를 기계에 붙여놓으면 사용하기 편리하다. 

사람과 기계 사이의 인터페이스

기계인 하드웨어가 아무리 바껴도 인터페이스가 바뀌지 않으면 우리는 사용하는데 불편함이 없다. 하지만 계속 하드웨어가 바뀌면 우리는 바뀔 때마다 하드웨어 사용법을 익혀야 하기 때문에 불편해진다. 

 

 

  • -선언(설계)과 구현을 분리시킬 수 있게 한다.

:선언(껍데기)+구현(알맹이)을 분리시키게 한다.

기존 class를 인터페이스로 분리

껍데기+알맹이가 붙어있던 B클래스를 I(껍데기)와 B(알맹이)로 분리시킨다. 

왼쪽처럼 쓰게되면 유연하지 않아 변경에 불리하다. 껍데기와 알맹이가 붙어있기 때문에 알맹이만 바꾸고 싶으면 전체를 다 바꿔야 하기 때문에 불편하다. 

오른쪽은 알맹이만 바꾸고 싶으면 B만 바꾸면 되므로 변경에 편리하다. 

 

 

  • -인터페이스 덕분에 B가 변경되어도 A는 안바꿀 수 있게 된다(느슨한 결합)

강한결합(위)과 느슨한 결합(아래)

위쪽 그림: A가 B를 사용한다. 만약 B가 C로 바뀐다면 A까지 변경해줘야 한다(A가 사람이라고 치면 B를 기계라고 생각하면 편하다). 기계가 바뀌면 사용하는 사용자는 기계 다루는 법까지 알아야 하므로 불편하다. 

아래 그림: A는 I를 통해 B를 접근한다. 만약 B가 C로 바뀐다면 A는 변경할 필요가 없다. A사용자는 오락을 할 때 기계 B가 C로 바뀌었는지 확인할 필요가 없다. 인터페이스인 I(화면)만 보면 되므로..

 

 

 

2. 직접적인 관계의 두 클래스(A-B)

인터페이스로 바꾼 코드

A까지 바꾸는 걸 없애기 위해 코드를 인터페이스로 수정한다. 

class A의 메서드의 매개변수는 바뀔때마다 수정해줬다면, 이제는 인터페이스 I를 사용하기에 바꿀 필요가 없다. 

변경이 줄어들수록 할일이 줄어들고 에러가 날 확률도 줄어든다. 

변경을 최소화하는게 우리한테 제일 좋다.

 

 

 

*유튜브 남궁성 선생님의 `자바의 정석`을 참고하여 만들었습니다*
*자세히 보고 싶은 분들은 유튜브 가서 보시면 됩니다*

728x90
반응형