스터디/이펙티브 자바

[Effective Java] Item22. 인터페이스는 타입을 정의하는 용도로만 사용

📝 작성 : 2022.06.04  ⏱ 수정 : 
728x90

인터페이스의 용도

자신을 구현한 클래스의 인스턴스를 참조할 수 있는 타입 역할을 합니다. 인터페이스는 오로지 이 용도로만 사용해야 합니다.

상수 인터페이스 안티패턴

상수 인터페이스란 메서드 없이, static final 필드로만 가득찬 인터페이스를 말합니다.

클래스 내부에서 사용하는 상수는 외부 인터페이스가 아니라 내부 구현에 해당합니다. 이는 내부 구현을 클래스의 API로 노출하는 행위입니다. 또한 클래스가 어떤 상수 인터페이스를 사용하든 사용자에게는 아무런 의미가 없습니다. 오히려 사용자에게 혼란을 주기도 하며, 클라이언트 코드가 내부 구현에 해당하는 상수들에 종속되게 됩니다.

상수 공개

  1. 특정 클래스나 인터페이스와 강하게 연관된 상수라면 그 클래스 자체에 추가
  2. 열거 타입
  3. 인스턴스와할 수 없는 유틸리티 클래스에 담아 제공
반응형