[개발 일기] 2025.05.15 - 클래스마다 무조건 인터페이스를 생성??

2025. 5. 15. 13:07·개발 일기

💡 개요

 

클래스마다 무조건 인터페이스를 생성하라고 요구하는 구현 표준은 좋은 예다.

 

 

이 문장은 클린코드(12장-창발성 P.222)에서 발췌해온 문장이다.

 

 

왜 클래스마다 무조건 인터페이스를 생성하는 게 좋은 예시일까?

 

 

인터페이스를 만든다는 것은 공통된 기능이 있다는 의미일 것이고, 인터페이스를 사용한다면 해당 기능을 자연스럽게 강제화하는 것인데…

 

 

 

🛠️ 인터페이스를 생성하는 게 좋은 이유

 

인터페이스를 만들면 얻을 수 있는 장점이 뭐가 있을까?

 

 

✅ DIP(의존 역전 원칙) 적용 가능

 

상위 모듈(사용자)은 하위 모듈(구현체)에 의존하지 않고, 인터페이스(추상화)에 의존하게 됨으로써 결합도가 낮아진다. 이는 유연한 구조를 가능하게 만든다.

 

 

✅ 테스트 용이성 향상

 

인터페이스가 있으면 테스트 시 실제 구현체 대신 가짜(Mock) 객체를 주입할 수 있어 테스트가 쉬워진다.

 

 

✅ 유연한 확장성

 

요구사항이 변경되어 다른 구현이 필요해져도 인터페이스를 구현한 새로운 클래스를 만들기만 하면 되므로, 기존 코드에 영향을 주지 않고 기능을 확장할 수 있다.

 


 

이를 보다시피 인터페이스를 사용한다면 얻을 수 있는 장점이 많다.

 

 

하지만 위에서도 언급했다시피 인터페이스를 구현하는 구현체는 인터페이스에 정의된 추상 메서드를 모두 구현해야 한다.

 

 

그렇기 때문에 인터페이스를 사용할 영역을 확실하게 결정해야 한다.

 

 

 

🤔 결론: 인터페이스는 ‘변화 가능성’이 있는 곳에만!

 

인터페이스는 강력한 도구지만, 무조건적인 생성은 좋은 설계가 아니다.

 

 

진짜 추상화가 필요한 경우에만 도입해야 하며, 다음과 같은 경우가 적절한 사용 예이다.

 

  • 구현체가 둘 이상 필요할 가능성이 있는 경우
  • 테스트를 위해 의존성 주입이 필요한 경우
  • 외부 라이브러리나 API와 유연하게 연동하기 위한 경우
  • 팀 규모가 크고, 각자의 역할이 명확히 분리되어야 하는 경우

'개발 일기' 카테고리의 다른 글

[개발 일기] 2025.05.17 - 비동기와 멀티스레딩?  (1) 2025.05.17
[개발 일기] 2025.05.16 - PSA (Portable Service Abstraction)  (0) 2025.05.16
[개발 일기] 2025.05.14 - ConfigurationProperties와 Setter  (0) 2025.05.14
[개발 일기] 2025.05.13 - 자바 Optional 정리  (0) 2025.05.13
[개발 일기] 2025.05.12 - 분산 저장 (파티셔닝, 샤딩)  (0) 2025.05.12
'개발 일기' 카테고리의 다른 글
  • [개발 일기] 2025.05.17 - 비동기와 멀티스레딩?
  • [개발 일기] 2025.05.16 - PSA (Portable Service Abstraction)
  • [개발 일기] 2025.05.14 - ConfigurationProperties와 Setter
  • [개발 일기] 2025.05.13 - 자바 Optional 정리
오도형석
오도형석
  • 오도형석
    형석이의 성장일기
    오도형석
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • MSA 모니터링 서비스
        • DB
      • 스파르타 코딩클럽
        • SQL
        • Spring
      • 백엔드
        • Internet
        • Java
        • DB
      • 캡스톤
        • Django
        • 자연어처리
      • Spring
        • JPA
        • MSA
      • ETC
        • ERROR
      • 개발 일기 N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 인기 글

  • 태그

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
오도형석
[개발 일기] 2025.05.15 - 클래스마다 무조건 인터페이스를 생성??
상단으로

티스토리툴바