상수 인터페이스를 이해했는가? 여기 WindowConstants 인터페이스를 상속받는 JFrame, JInternalFrame, JDialog와 같은 클래스도 있음에 주목하자. 상수 인터페이스를 사용하는 또 다른 예는 ObjectInputStream과 ObjectOutputStream 클래스가 구현한 java.io.ObjectStreamConstants다.
상수 인터페이스를 사용하고 구현하는 접근 방식은 다음 문제로 고통받는다.
• 파생된 클래스는 파생된 클래스와 관련이 없을 수도 있는 상수로 ‘오염’된다.
• 이런 상수는 구현 세부 사항으로, 인터페이스를 사용한 상수의 외부 공개는 캡슐화를 위반한다.
• 상수가 인터페이스의 일부일 때 상수 변경은 기존 클라이언트를 망가뜨릴 수 있다.
요약하면, 인터페이스는 구현 중인 클래스가 반드시 지원해야 하는 프로토콜 형태로 봉사한다. 상수의 소유자로서 이를 사용하는 인터페이스 정의는 추상화 메커니즘의 오용이 된다.