인터페이스는 타입을 정의하는 용도로만 사용하라

김종준·2023년 5월 9일
0

이펙티브자바

목록 보기
19/63

인터페이스는 타입을 정의하는 용도로만 사용하라

클래스가 어떤 인터페이스를 구현한다는 것은 자신의 인스턴스로 무엇을 할 수 있는지 클라이언트에 이야기해 주는 것이다.

인터페이스는 오직 이용도로만 사용해야 한다.

이 지침에 맞지 않는 예로 소위 상수 인터페이스가 있다.

상수 인터페이스 안티패턴은 인스턴스를 잘못 사용한 예이다.

클래스가 어떤 상수 인터페이스를 사용하던 사용자에게 아무런 의미가 없다.

오히려 사용자에게 혼란을 주기도 하며, 더 심하게는 클라이언트 코드가 내부 구현에 해당하는 이 상수들에 종속되게 한다.

그렇기에 상수를 공개할 목적이라면 더 합당한 선택지가 있다.

특정 클래스나 인터페이스와 강하게 연관된 상수라면 그 클래스나 인터페이스 자체에 추가하는 것이다.

혹은 인스턴스 화할 수 없는 유틸리티 클래스에 담아 공개하는 방법이 있다.

유틸리티 클래스에 정의된 상수를 클라이언트에서 사용하려면 클래스 이름까지 함께 명시해야 한다.

그러나 유틸리티 클래스의 상수를 빈번히 사용한다면 정적 임포트를 하여 클래스 이름을 생략할 수 있다.

0개의 댓글