국비학원 다니면서도 인터페이스에 대해서 배웠지만,
그때 당시에는 '이걸 왜 쓰지...? '라는 물음표 ????를 남긴 채 계속 사용했었다.
그러다가 스프링입문 강의를 들으면서, 인터페이스를 쓰게 되면서 인터페이스에 대해서 정리해 보는 시간을 갖기로 했다.
역시 유튜브에 재미있게 정리해놓은 내용이 있다. 해당 내용 한 번만 보면 재미있게 이해하게 좋을 것 같다!
🤔 인터페이스란 ?
: 한마디로 얘기해보자면 '약속'이다.
ex. 리모컨 전원을 누르면 티비가 켜진다와 같이 A를 하게 되면 | 넣으면 B 가 실행된다 라는 약속이다.
예전에 공부한 API의 약자도 Application Programming Interface로
개발자가 안드로이드 앱을 개발하고 있는데 어떤 아이템을 사면 돈 받고 결제하는 시스템을 넣고 싶다고 가정을 한다면,
예를 들어 TOSS에서 제공하는 결제API를 이용해서 구현하게 될 것이다.
그렇다면 TOSS에서 제공하는 결제 기능과 안드로이드 앱 사이를 이어주는 인터페이스가 API가 되는 것이다!
( 오.. 이런거 너무 좋아 너무 신기해.. 보물을 발견한 느낌이야...!)
'개발자가 고기 먹다 발견한 엄청난 인터페이스'를 보고 재미있게 정리를 해보도록 하자!
어느 날 회식을 하러 고깃집에 갔는데 부장님이 '박사원 술 한병 시켜줘!'라고 나에게 말했다.
바로 호출벨을 눌렀을 때 직원이 오는 것을 보고 ' 아! 저게 바로 인터페이스지! ' 라는 생각을 했다.
호출벨을 눌렀더니! 직원이 왔다! (A를 했더니 B의 리턴값이 왔다)
그렇다면 호출벨의 내부 동작은?
손님이 벨을 눌렀다 ➡ 수신기에 손님이 앉은 번호 13번이 보인다 ➡ 직원이 확인해서 13 테이블에 주문을 받는다.
되게 쉽게 내부동작과 외부동작으로 이루어져 있는 이 호출벨을 어떤 것을 유의해서 만들어야 할까?
① 직관적인 입출력
누가 봐도 알 수 있도록 만들어야 한다.
호출벨을 1초에 3번을 연속으로 눌러야 작동이 된다면 굉장히 사용이 어려울 것이다.
② 성능 요구사항
호출벨을 눌렀을때 10초동안 아무런 응답이 오지 않는다면 매우 답답할 것이다.
만약 호출벨을 눌렀을때 어떤 결과를 리턴될지는 사용자가 알게 해야한다.
③ 하위호환 지원
신버전이 있음에도 하위버전을 지원하는 것으로,
호출벨을 모르는 사람이 가 '저기요!'라고 했는데 종업원이 아무런 반응이 없다.
손님은 다시한번 '저기요!'라고 했는데 종업원이 와서 ' 호출벨을 눌러야지 됩니다' 라고 했다고 한다.
나 같으면 그 식당 절대 안갈 것이다.
이런 상황에서는 신버전 (호출벨)도 좋지만 구번전(저기요! ) 를 같이 지원하는 것도 좋다.
하지만 안하는게 가장 좋지만...유지관리도 어렵고, 옛날 기능을 사용해야하니까..
(주변 개발자들이 이걸 아직도 유지보수해야한다니까라는 말을 많이 듣기도 했다.)
④ 누구나 알고 쉽게 사용할 수 있어야한다.
이렇게 인터페이스는 약속이다와 유의사항을 알았다면 코드에서 어떻게 적용되는지 한번 확인해보자
아래 영상은 코드로 보는 인터페이스로 위에 영상을 보고 아래 영상을 보면 더 이해가 갈 것이다.
스프링 입문 강의를 듣다가 인터페이스에 대해서 정리를 하게 되었는데,
역시 개발자는 공부할 것도 많고 알아야할 것도 많고... 참 어렵지만 그래도 좀 재미있다..?
'ON > 개발지식' 카테고리의 다른 글
[책리뷰] 자바의 신 3판 - 1장.프로그래밍이란 무엇인가 ? (1) | 2023.12.01 |
---|---|
[ 개발지식] JUnit이란 ? 음 그럼 단위테스트 란 ? (0) | 2023.11.10 |
[개발지식] 자바 백엔드 웹 기술 역사 (Servlet에서 Spring Boot까지 이야기) (0) | 2023.11.06 |
빌드, 웹배포하기 (0) | 2023.10.04 |
REST API 란 ? (0) | 2023.09.12 |