Effective Java Study
아이템23 태그 달린 클래스보다는 클래스 계층구조를 활용하라
단점이 많은 태그 달린 클래스는 사용을 지양.
클래스 계층구조를 사용하자.
- 클래스 계층구조 변환방법
- 계층구조의 루트(root)가 될 추상 클래스를 정의하고,
- 태그 값에 따라 동작이 달라지는 메서드들을 루트 클래스의 추상 메서드로 선언한다.
- 태그 값에 상관없이 동작이 일정한 메서드들을 루트 클래스에 일반 메서드로 추가한다.
- 모든 하위 클래스에서 공통으로 사용하는 데이터 필드들도 전부 루트 클래스로 올린다.
- 루트 클래스를 확장한 구체 클래스를 의미별로 하나씩 정의한다.
각 클래스의 생성자가 모든 필드를 남김없이 초기화하고 추상 메서드를 모두 구현했는지 컴파일러가 확인해준다.
아이템24 멤버 클래스는 되도록 static으로 만들라
멤버 클래스의 인스턴스 각각이 바깥 인스턴스를 참조한다면 비정적으로,
그렇지 않고 바깥 인스턴스에 접근할 일이 없다면
무조건 static을 붙여서 정적 멤버 클래스로 만들자.
아이템25 톱레벨 클래스는 한 파일에 하나만 담으라
소스 파일 하나에는 반드시 톱레벨 클래스(혹은 톱레벨 인터페이스)를 하나만 담는다.