Java의 인터페이스에 대한 설명 Part1.

Java의 인터페이스에 대한 설명 Part1

1. 인터페이스란?

인터페이스(Interface) 는 모듈 간의 연결 규약을 정의하는 개념입니다. 쉽게 말해, 어떤 입력값을 받고 어떤 출력값을 반환할 것인지를 약속하는 역할을 합니다.
인터페이스를 설계할 때는 "무엇을 주고받을지" 에 초점을 맞추며, 실제 내부 동작(로직)은 고려하지 않습니다.

📌 예제: 시스템 간 인터페이스와 유사한 개념

API를 설계할 때,
  • API URL
  • Request(요청 데이터 구조)
  • Response(응답 데이터 구조)
만 정의하고, 내부 비즈니스 로직은 다루지 않는 것과 같은 개념입니다.

2. 실제 업무에서 인터페이스가 적용되는 방식

실무에서도 비즈니스 프로세스를 정의하는 단계에서 인터페이스 개념이 활용됩니다. 예를 들어, 고객 가입 프로세스를 설계한다고 가정해 봅시다.

✨ 초반 설계 단계에서의 정의

처음에는 이렇게 단순하게 정의할 수 있습니다.
"고객이 이름, 휴대폰 번호, 아이디, 이메일 등의 정보를 입력하고 가입한다."
하지만 이 단계에서는
  • "이름과 전화번호는 필수 입력이다."
  • "아이디는 중복 확인이 필요하다."
  • "이메일은 선택 사항이다."
와 같은 세부적인 조건들은 나중에 확정됩니다.
즉, 인터페이스는 전반적인 틀(구조)을 먼저 정의하고, 상세한 구현은 이후 단계에서 다루는 것과 같습니다.

3. 인터페이스를 설계할 때 고려해야 할 4가지 요소

  1. 서로 데이터를 주고받아야 하므로 개방(Open)되어 있어야 한다.
  2. 호출할 이름(대상명)이 필요하다.
  3. 어떤 데이터를 주고받을지 명확하게 정의해야 한다.
  4. 내부 로직은 호출하는 사람이 몰라도 된다.

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의 인터페이스는 단순한 코드 요소가 아니라, 설계 원칙(규약)을 정의하고 유지보수를 쉽게 만드는 강력한 도구입니다.
이를 이해하면 더 유연하고 확장 가능한 소프트웨어를 설계할 수 있습니다. 실제 프로젝트에서 인터페이스를 적극적으로 활용해 보세요! 🚀

Comment