brunch
매거진 Effective Java

클래스와 인터페이스

#19 타입을 정의할 때만 인터페이스를 이용하자

by 이승현

Effective Java - 클래스와 인터페이스


#19 타입을 정의할 때만 인터페이스를 이용하자


인터페이스는 해당 인터페이스를 구현하는 클래스의 인스턴스를 참조하는데 이용될 수 있는 타입을 정의할 수 있습니다.

따라서 인터페이스는 클래스의 인스턴스가 할 수 있는 일을 나타내야 합니다.


아래 코드는 타입을 정의하지 않고, 상수 값만 가지는 상수 인터페이스입니다.


캡처1.PNG #01 상수 인터페이스 안티패턴


기본적으로 클래스가 내부적으로 이용하는 상수들은 해당 클래스의 상세한 구현에 속합니다.

따라서 아래와 같이 상수 인터페이스를 구현하면 상세한 구현들이 외부 API로 노출되게 됩니다.


캡처2.PNG #02 상수 인터페이스 구현




만약 상수를 외부에 제공하고 아래와 같이 인스턴스를 생성할 수 없는 상수 클래스를 통해 제공할 수 있습니다.


캡처3.PNG #03 상수 클래스


캡처4.PNG #04 상수 클래스 이용


결론은 인터페이스는 타입을 정의할 때만 이용하고, 상수를 외부에 제공하기 위해서는 이용하면 안 됩니다.




keyword
매거진의 이전글클래스와 인터페이스