Language
-
[Effective Java] 아이템3: private 생성자나 열거 타입으로 싱글턴임을 보증하라Language/Java 2022. 5. 14. 00:58
싱글턴(Singleton) 이란? 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. 싱글턴의 전형적인 예로는 함수와 같은 무상태(stateless) 객체나 설계상 유일해야 하는 시스템 컴포넌트를 들 수 있다. 싱글턴을 만드는 방식은 3가지가 있다. public static final 필드 방식 (private 생성자 사용) 정적 팩터리 방식 (private 생성자 사용) 열거 타입 방식 이제 각각의 방식을 알아보자. 1. public static final 필드 방식 public calss Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() { ... } public void leaveTheBuilding() { ....
-
[Effective Java] 아이템2: 생성자에 매개변수가 많다면 빌더를 고려하자Language/Java 2022. 5. 13. 23:39
정적 팩터리와 생성자에는 똑같은 제약 사항이 하나 있다. 바로 선택적 매개변수가 많을 때 적절히 대응하기 어렵다는 점이다. 선택 매개변수가 많을 때 취할 수 있는 대안을 알아보자. 선택 매개변수가 많을 때 활용할 수 있는 대안 1. 점층적 생성자 패턴(Telescoping Constructor Pattern) 먼저 점층적 생성자 패턴이 있다. 이 패턴은 필수 매개변수만 생성자부터, 필수 매개변수와 선택 매개변수 1개를 받는 생성자, 선택 매개변수 2개까지 받는 생성자, ... 형태로 선택 매개변수를 전부 받는 생성자까지 늘려가는 방식이다. 점층적 생성자 패턴은 매개변수 개수가 많아지면 클라이언트 코드를 작성하거나 읽기가 어렵다는 문제가 있다. 코드를 읽을 때, 각 값의 의미가 헷갈리고, 매개변수가 몇 개..
-
[Effective Java] 아이템1: 생성자 대신 정적 팩터리 메서드를 고려하라Language/Java 2022. 5. 13. 15:17
✔️ 정적 팩터리 메서드(Static Factory Method) 란? 그 클래스의 인스턴스를 반환하는 단순한 정적 메서드 참고) 정적 팩터리 메서드는 디자인 패턴에서의 팩터리 메서드 (Factory Method)와 다르다. 디자인 패턴 중 이와 일치하는 패턴은 없다. ✔️ 장점 1. 이름을 가질 수 있다. 생성자에 넘기는 매개변수와 생성자 자체만으로는 반환될 객체의 특성을 제대로 설명하지 못한다. 반면, 정적 팩터리 메서드는 이름만 잘 지으면 반환될 객체의 특성을 쉽게 묘사할 수 있다. BigInteger(int, int, Random) vs BigInteger.probablePrime '값이 소수인 BigInteger를 반환한다'는 의미를 어느 쪽이 더 잘 설명하고 있는지는 누구나 알 것이다. 2. ..