백수의 개발/이펙티브 자바
-
Item 3. private 생성자나 열거 타입으로 싱글턴임을 보증하라백수의 개발/이펙티브 자바 2019. 7. 13. 15:41
싱글턴이란? 싱글턴이란 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. 커넥션 풀, 스레드 풀, 디바이스 설정 객체 등의 경우, 인스턴스를 여러개 생성하면 자원을 낭비하거나 버그가 발생될 수 있어 오직 하나의 인스턴스만 생성하여 사용하도록 한다. 싱글턴을 보증하기 위해서는 private생성자 또는 열거 타입을 사용할 수 있다. private 생성자를 통한 싱글턴 보증 싱글턴으로 객체를 만들기 위해서는 new를 통해 인스턴스를 생성할 수 없도록 생성자에 private 접근 제어자를 지정해야한다. 또한 유일한 인스턴스를 반환할 수 있도록 정적 메소드를 지원해야하며, 해당 인스턴스를 참조할 정적 참조변수가 필요하다. 아래는 public static final 필드 방식의 싱글턴이다. public cl..
-
Item 2. 생성자에 매개변수가 많다면 빌더를 고려하라백수의 개발/이펙티브 자바 2019. 7. 9. 15:00
점층적 생성자 패턴(Telescoping constructor pattern) 필수 매개변수만 받는 생성자부터 시작하여 필수 매개변수와 선택 매개변수 1개를 받는 생성자, 선택 매개변수를 2개 받는 생성자, ..., 선택 매개변수를 전부 다 받는 생성자까지 모든 생성자를 작성하는 방식이다. 아래와 같이 클래스를 정의할 수 있다. public 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 ..
-
Item 1. 생성자 대신 정적 팩터리 메서드를 고려하라백수의 개발/이펙티브 자바 2019. 7. 3. 13:14
우리가 자주 사용하는 정적 팩터리 메서드 java개발을 하다보면 정적 팩터리 메서드를 사용하는 경우들이 있다. 대표적으로 Arrays, Collections 클래스에서 사용하는 메서드들이다. String[] nameArray = {"홍길동", "홍길순", "홍길두", "홍길희"}; List nameList = Arrays.asList(nameArray); Collections.sort(nameList); 이 뿐만 아니라 java의 primitive type에 대한 객체들에서도 정적 팩터리 메서드를 사용할 수 있다. int five = Integer.valueOf(5); boolean isCorrect = Boolean.valueOf(true); BigInteger bigIntegerTen = BigInt..