이펙티브 자바
-
객체 생성과 파괴 - 아이템 3. private 생성자나 열거 타입으로 싱글턴임을 보증하라Study/Effective Java 2022. 12. 12. 13:48
private 생성자나 열거 타입으로 싱글턴임을 보증하라 싱글턴이란? 싱글턴이란 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. 싱글턴의 전형적인 예로는 함수와 같은 무상태 객체나 설계상 유일해야 하는 시스템 컴포넌트를 들 수 있다. public static final 필드 방식의 싱글턴 생성 public class User { public static final User INSTANCE = new User(); /** private 생성자 */ private User() { ... }; } private 생성자는 public static final 필드인 User.INSTANCE를 초기화할 때 딱 한 번만 호출된다. public이나 protected 생성자가 없으므로 User 클래스가 초기화될..
-
객체 생성과 파괴 - 아이템 2. 생성자에 매개변수가 많다면 빌더를 고려하라Study/Effective Java 2022. 12. 12. 11:10
생성자에 매개변수가 많다면 빌더를 고려하라 점층적 생성자 패턴 public class User { private final int age; // 필수 private final int phoneNumber; // 필수 private final int weight; // 선택 private final int tall; // 선택 private final int birthday; // 선택 } 생성자와 정적 팩토리 메서드는 똑같은 제약이 하나 있다. 바로, 위 코드와 같이 선택적 매개변수가 많을 때 적절히 대응하기 어렵다는 점이다. 위와 같은 클래스용 생성자 혹은 정적 팩토리 메서드를 위해 프로그래머들은 점층적 생성자 패턴을 즐겨 사용했다. 필수 매개 변수만 받는 생성자, 필수 매개변수와 선택 매개변수 1개를..
-
객체 생성과 파괴 - 아이템 1. 생성자 대신 정적 팩토리 메서드를 고려하라Study/Effective Java 2022. 12. 8. 17:21
생성자 대신 정적 팩토리 메서드를 고려하라 정적 팩토리 메서드의 장점 1. 이름을 가질 수 있다. public static Position createStartPosition() { return new Position(START_POSITION_VALUE); } Position position = Position.createStartPosition(); 생성자 자체는 생성되는 객체의 특성을 직관적으로 설명하지 않는다. 위 코드와 같이 메서드명을 명시함으로써 어떠한 객체가 생성되는지 더 구체적으로 알 수 있다. public class Person { String name; String age; public Person(String name) { this.name = name; } public Person(..