View
반응형
클래스가 어떤 인터페이스를 구현한다는 것은 자신의 인스턴스로 무엇을 할 수 있는지를 클라이언트에게 말해주는 것이다. 인터페이스는 오직 이 용도로만 사용해야 한다.
메서드 없이 상수 필드만 가득한 상수 인터페이스를 사용하지 말자. 상수 인터페이스는 인터페이스를 잘못 사용한 안티 패턴이다.
클래스 내부에서 사용하는 상수는 외부 인터페이스가 아니라 내부 구현에 해당한다. 따라서 상수 인터페이스를 구현하는 것은 내부 구현을 외부로 노출하는 행위이다. 이는 사용자에게 혼란을 주고 클라이언트 코드가 내부 구현에 해당하는 상수에 종속적이게 될 수 있다.
만약 상수를 공개하고 싶다면 인스턴스화할 수 없는 유틸리티 클래스를 통해 공개하자. 혹은 그 클래스나 인터페이스에 강하게 연관된 상수라면 그 클래스나 인터페이스 자체에 추가 해야 한다.
핵심 정리
인터페이스는 타입을 정의하는 용도로만 사용해야 한다. 상수 공개용 수단으로 사용하지 말자.
반응형
'BackEnd > 이펙티브 자바' 카테고리의 다른 글
[이펙티브 자바] Item24- 멤버 클래스는 되도록 static으로 만들라 (0) | 2021.03.13 |
---|---|
[이펙티브 자바] Item23- 태그 달린 클래스보다는 클래스 계층구조를 활용하라 (0) | 2021.03.13 |
[이펙티브 자바] Item21- 인터페이스는 구현하는 쪽을 생각해 설계하라 (0) | 2021.03.09 |
[이펙티브 자바] Item20- 추상클래스보다는 인터페이스를 우선시하라 (0) | 2021.03.07 |
[이펙티브 자바] Item19- 상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라. (0) | 2021.02.21 |