인터페이스

개인 공부/Java

[오브젝트] 클래스를 분리해야할 때

변경에 있어서 자유롭지 못 한 클래스는 분리해야한다. 문제는 클래스 안에서 변경의 이유를 찾는 것이 생각보다 어렵다는 점이다. 코드를 통해 변경의 이유를 파악할 수 있는 첫 번째 방법은 인스턴스 변수가 초기화 되는 시점을 살펴보는 것이다. 응집도가 높은 클래스는 인스턴스를 생성할 때 모든 속성을 함께 초기화하는 반면, 응집도가 낮은 클래스는 객체의 속성 중 일부만 초기화하고 일부는 초기화되지 않은 상태로 남겨진다. 함께 초기화되는 속성을 기준으로 코드를 분리해야한다. 코드를 통해 변경의 이유를 파악할 수 있는 두 번째 방법은 메서드들이 인스턴스 변수를 사용하는 방식을 살펴보는 것이다. 모든 메서드가 객체의 모든 속성을 사용한다면 클래스의 응집도는 높다고 볼 수 있다. 속성 그룹과 해당 그룹에 접근하는 메..

개인 공부/스터디

[이펙티브 자바] 인터페이스의 용도

🏠 인터페이스는 타입을 정의하는 용도로만 사용하라. 인터페이스는 자신을 구현한 클래스의 인스턴스를 참조할 수 있는 타입 역할을 한다. 즉 클래스가 어떤 인터페이스를 구현한다는 것은 자신의 인스턴스로 무엇을 할 수 있는지를 클라이언트에게 얘기하는 것이다. 인터페이스는 오직 이 용도로만 사용해야한다. 💊 잘못된 예시 ( 상수 인터페이스 ) 상수 인터페이스 안티패턴은 인터페이스를 잘못 사용한 예시다. 클래스 내부에서 사용하는 상수는 외부 인터페이스가 아닌, 내부 구현에 해당한다. 때문에 상수 인터페이스를 구현하는 것은 해당 내부 구현을 클래스의 API로 노출하는 행위이다. 이는 혼란을 줄 수 있을 뿐만 아니라, 클라이언트 코드가 내부 구현에 해당하는 상수들에 종속될 수 있다. 이로서 더는 쓰지 않게 되더라고,..

Da2isy
'인터페이스' 태그의 글 목록