더북(TheBook)

상수 인터페이스를 이해했는가? 여기 WindowConstants 인터페이스를 상속받는 JFrame, JInternalFrame, JDialog와 같은 클래스도 있음에 주목하자. 상수 인터페이스를 사용하는 또 다른 예는 ObjectInputStreamObjectOutputStream 클래스가 구현한 java.io.ObjectStreamConstants다.

상수 인터페이스를 사용하고 구현하는 접근 방식은 다음 문제로 고통받는다.

 

파생된 클래스는 파생된 클래스와 관련이 없을 수도 있는 상수로 ‘오염’된다.

이런 상수는 구현 세부 사항으로, 인터페이스를 사용한 상수의 외부 공개는 캡슐화를 위반한다.

상수가 인터페이스의 일부일 때 상수 변경은 기존 클라이언트를 망가뜨릴 수 있다.

 

요약하면, 인터페이스는 구현 중인 클래스가 반드시 지원해야 하는 프로토콜 형태로 봉사한다. 상수의 소유자로서 이를 사용하는 인터페이스 정의는 추상화 메커니즘의 오용이 된다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.