인터페이스를 구현하는 클래스를 만들게 되면, 그 인터페이스는 해당 클래스의 객체를 참조할 수 있는 자료형 역할을 하게 된다. 인터페이스를 구현해 클래스를 만든다는 것은, 해당 클래스의 객체로 어떤 일을 할 수 있는지 클라이언트에게 알리는 행위이다.
안좋은 예로 소위 상수 인터페이스 라는 것이 있다. 인터페이스에 메서드가 없고 static final 필드만 있다.
위의 예시 인터페이스는 인터페이스를 잘 못 사용한 것이다. 클래스가 어떤 상수를 어떻게 사용하느냐 하는 것은 구현 세부사항인데 인터페이스에 이러한 구현 세부사항을 정의하게 되면, 구현 세부사항이 API로 노출되기 때문이다.
상수를 API일부로 공개하고 싶을 때는 더 좋은 방법이 있다. 해당 상수가 이미 존재하는 클래스에 강하게 연결되어 있을 때는 해당 클래스에 상수를 정의하면 된다.
요약
인터페이스는 자료형을 정의할 때만 사용해야 한다. 특정 상수를 API의 잉ㄹ부로 공개할 목적으로는 적절치 않다.
'개발서적 > 이펙티브자바' 카테고리의 다른 글
[클래스와 인터페이스]규칙21.전략을 표현하고 싶을 때는 함수 객체를 사용하라 (0) | 2017.04.26 |
---|---|
[클래스와 인터페이스]규칙20. 태그달린 클래스 대신 클래스 계층을 활용하라 (0) | 2017.04.25 |
[클래스와 인터페이스]규칙18. 추상 클래스 대신 인터페이스를 사용하라 (0) | 2017.04.25 |
[클래스와 인터페이스]규칙17. 계승을 위한 설계와 문서를 갖추거나, 그럴 수 없다면 계승을 금지하라 (0) | 2017.04.24 |
[클래스와 인터페이스]규칙16. 계승하는 대신 구성하라 (0) | 2017.04.24 |