이펙티브 자바 Effective Java 2/E국내도서저자 : 조슈아 블로크(Joshua Bloch) / 이병준역출판 : 인사이트 2014.09.01상세보기 java.lang.Math, java.util.Arrays, java.util.Collections 같은 유틸리티 클래스(utility class)들은 객체를 만들 목적의 클래스가 아니다. private 생성자를 이용한 객체 생성 방지 public class UtilityClass { // 기본 생성자가 자동 생성되지 못하도록 하여 객체 생성 private UtilityClass() { throw new AssertionError(); } } AssertionError는 반드시 필요한 것은 아니지만, 클래스 안에서 실수로 생성자를 호출하면 바로 알 ..
이펙티브 자바 Effective Java 2/E국내도서저자 : 조슈아 블로크(Joshua Bloch) / 이병준역출판 : 인사이트 2014.09.01상세보기 JDK 1.5 이전에는 싱글턴을 구현하는 방법이 두 가지 였다. 1. 정적 멤버는 final로 선언 public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() { ... } public void leaveTheBuilding() { ... } } private 생성자는 pulic static final 필드인 Elivs.INSTANCE를 초기화 할 때 한 번만 호출된다. 2. public으로 선언된 정적 팩터리 public class Elvis { pri..
이펙티브 자바 Effective Java 2/E국내도서저자 : 조슈아 블로크(Joshua Bloch) / 이병준역출판 : 인사이트 2014.09.01상세보기 정적 팩터리나 생성자는 선택적 인자가 많은 상황에서 잘 적응하지 못한다. 1. 점층적 생성자 패턴(telescoping constructor pattern) 보통 프로그래머들은 이런 상황에 점층적 생성자 패턴을 적용한다. public class NutritionFacts { private final int servingSize; private final int servings; private final int calories; private final int fat; public NutritionFacts(int servingSize, int ser..
이펙티브 자바 Effective Java 2/E국내도서저자 : 조슈아 블로크(Joshua Bloch) / 이병준역출판 : 인사이트 2014.09.01상세보기 Boolean 클래스의 예 public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } 1. 생성자와 달리 정적 팩터리 메서드에는 이름이 있다. 정적 팩터리는 이름을 잘 짓기만 한다면 사용하기도 쉽고, 클라이언트 코드의 가독성도 높아진다. 같은 시그니처를 갖는 생성자를 여러 개 정의할 필요가 있을 때는 그 생성자들을 정적 팩터리 메서드로 바꾸고, 메서드 이름을 보면 차이가 명확히 드러나도록 작명 2. 생성자와는 달리 호출할 때마다 새로운 객체를 생성할 필요가..