책리뷰/이펙티브자바 (11) 썸네일형 리스트형 [이펙티브자바] 아이템3. private생성자나 열거타입으로 싱글턴 보증 싱글턴 인스턴스를 오직 하나만 생성할 수 있는 클래스. 클라이언트를 테스트 하기 어려워질 수 있다. 싱글턴을 만드는 방법은 두 가지가 있는데 두 가지 모두 생성자는 private으로 감춰두고 static멤버를 이용해서 인스턴스에 접근할 수 있다. 첫 번째 싱글턴 생성방법 public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis(){ } public void leaTheBuild() {} } private 생성자는 Elvis.INSTANCE를 초기화할 때 한 번만 호출된다. 그런데 리플렉션 API AccessibleOjbect.setAccessible을 사용해 생성자를 호출 할 수 있다. // 기존에 static.. [이펙티브자바] 아이템2. 생성자에 매개변수가 많다면 빌더를 고려하라 정적 팩터리와 생성자는 선택적 매개변수가 많으면 대응하기 어렵다. 영양 정보를 제공하는 클래스이다. 점층적 생성자 패턴 - 확장이 어려움 pubic class NutritionFacts { private final int servingSize; private final int servings; private final int calories; private final int fat; private final int sodium; private final int carbohydrate; public NutritionFacts(int servingSize, int servings) { this(servingSize, servings, 0); } public NutritionFacts(int servingSi.. [이펙티브자바] 아이템1. 생성자 대신 정적 팩터리 메서드를 고려해야하는 이유 public static Boolean valueOf(boolean b) { return b? Boolean.TRUE : Boolean.FALSE; } 클래스는 정적팩터리 메서드를 제공 할 수 있는데 위 예제는 메서드의 기본타입인 boolean을 받아서 Boolean객체 참조로 변환해준다. 클래스는 public 생성자 대신 정적 팩터리 메서드를 제공할 수 있다. 장점과 단점을 알아본다. 정적 팩터리 메소드 장점 첫 번째, 이름을 가질 수 있다. 생성자에 넘기는 매새변수와 생성자 자체만으로는 반환될 객체의 특성을 제대로 설명하지 못한다. 정적 팩터리 메서드는 이름을 잘 지으면 반환될 객체의 특성을 잘 묘사할 수 있다. ex) BigInteger(int, int, Random) vs BigInteger.pr.. 이전 1 2 다음