카테고리 없음

[Effective Java] Item64. 객체는 인터페이스를 사용해 참조하라

📝 작성 : 2022.08.14  ⏱ 수정 : 
728x90

적함한 인터페이스만 있다면 매개변수뿐 아니라 반환값, 변수, 필드를 전부 인스턴스 타입으로 선언하는 것이 프로그램을 훨씬 유연하게 만들어 줍니다.

하지만 인터페이스의 일반 규약이외의 특별한 기능에 의존하고 있다면 새로운 클래스도 반드시 이 기능을 제공해야합니다.

클래스를 참조해야하는 경우

적합한 인터페이스가 없다면 클래스를 참조합니다.

1. 값 클래스

String과 BigInteger 같은 값 클래스의 경우 final인 경우가 많고 상응하는 인터페이스가 별도로 존재하는 경우가 드뭅니다.

2. 클래스 기반으로 작성된 프레임워크가 제공하는 객체

OutputStream 등 java.io 패키지의 여러 클래스가 이 부류에 속합니다.

3. 인터페이스에는 없는 특별한 메서드를 제공하는 클래스(권장X)

PriorityQueue 클래스는 Queue 인터페이스에는 없는 comparator 메서드를 제공합니다.. 이런 추가 메서드가 필요한 경우에만 사용해야 합니다.

반응형