Java의 인터페이스에 대한 설명 Part1
1. 인터페이스란?
인터페이스(Interface) 는 모듈 간의 연결 규약을 정의하는 개념입니다.
쉽게 말해, 어떤 입력값을 받고 어떤 출력값을 반환할 것인지를 약속하는 역할을 합니다.
인터페이스를 설계할 때는 "무엇을 주고받을지" 에 초점을 맞추며,
실제 내부 동작(로직)은 고려하지 않습니다.
📌 예제: 시스템 간 인터페이스와 유사한 개념
API를 설계할 때,
- API URL
- Request(요청 데이터 구조)
- Response(응답 데이터 구조)
만 정의하고, 내부 비즈니스 로직은 다루지 않는 것과 같은 개념입니다.
2. 실제 업무에서 인터페이스가 적용되는 방식
실무에서도 비즈니스 프로세스를 정의하는 단계에서 인터페이스 개념이 활용됩니다.
예를 들어, 고객 가입 프로세스를 설계한다고 가정해 봅시다.
✨ 초반 설계 단계에서의 정의
처음에는 이렇게 단순하게 정의할 수 있습니다.
"고객이 이름, 휴대폰 번호, 아이디, 이메일 등의 정보를 입력하고 가입한다."
하지만 이 단계에서는
- "이름과 전화번호는 필수 입력이다."
- "아이디는 중복 확인이 필요하다."
- "이메일은 선택 사항이다."
와 같은 세부적인 조건들은 나중에 확정됩니다.
즉, 인터페이스는 전반적인 틀(구조)을 먼저 정의하고, 상세한 구현은 이후 단계에서 다루는 것과 같습니다.
3. 인터페이 스를 설계할 때 고려해야 할 4가지 요소
- 서로 데이터를 주고받아야 하므로 개방(Open)되어 있어야 한다.
- 호출할 이름(대상명)이 필요하다.
- 어떤 데이터를 주고받을지 명확하게 정의해야 한다.
- 내부 로직은 호출하는 사람이 몰라도 된다.
4. Java에서 인터페이스 활용하기
Java에서는 인터페이스 를 사용하여 이러한 개념을 코드로 구현할 수 있습니다.
🎯 예제 코드
public interface ExampleInterface {
public CustomerInfo signUp(CustomerInfomation customerInfomation);
}
🔍 코드 설명
- Open 되어 있어야 하므로 public 접근 제어자를 사용
- 데이터를 주고받아야 하므로 입력(CustomerInfomation)과 출력(CustomerInfo) 타입을 정의
- 내부 로직은 인터페이스에서 다루지 않고, 실제 구현 클래스에서 처리
✅ MyBatis 같은 프레임워크에서도 활용
- MyBatis를 사용할 때도, DAO(Data Access Object) 인터페이스만 정의하고
- 실제 SQL 매핑과 실행은 XML 또는 애노테이션으로 처리하는 방식이 동일한 원리입니다.
5. 인터페이스의 장점
인터페이스를 사용하면 다음과 같은 장점이 있습니다.
- ✅ 유연한 설계: 여러 구현체를 쉽게 교체 가능
- ✅ 결합도 감소: 코드 수정 시 영향 최소화
- ✅ 테스트 용이: 목(Mocking) 객체를 활용한 단위 테스트 가능
6. 마무리
Java의 인터페이스는 단순한 코드 요소가 아니라,
설계 원칙(규약)을 정의하고 유지보수를 쉽게 만드는 강력한 도구입니다.
이를 이해하면 더 유연하고 확장 가능한 소프트웨어를 설계할 수 있습니다.
실제 프로젝트에서 인터페이스를 적극적으로 활용해 보세요! 🚀