책 읽기/IT 기술 도서

[이펙티브자바 3/E] 아이템 1,2,3 : 정적 팩토리 메서드,Builder, 싱글턴 패턴

TutleKing 2023. 7. 3. 23:22

자바 백엔드 신입으로 업무를 진행하는 와중에 이거는 알아야지~ 라고 듣는 부분들이 해당 책에서 많이 나온다는 것을 알고 바로 공부해야겠다 마음을 먹었네요!

아이템 1. 생성자 대신 정적 팩토리 메서드를 고려

// from : 인자를 받아 해당 타입의 인스턴스로 변경
Date d = Date.from(instant);

// of : 인자를 받아 적합한 타입의 인스턴스로 반환 
Set<Rank> faceCards = EnumSet.of(JACK,KING);

// valueOf : from + of 
BigInteger prime = BigInteger.valueOf(Integer.MAX_VALUE);

// instance, getInstance : 명시한 인스턴스를 반환

// create, newInstance : 새로운 인스턴스를 반환 

// getType, newType, type : 다른 타입의 클래스를 반환 
  • 장점
    • 이름을 가질 수 있다.
    • 호출 할 때 마다 인스턴스를 새로 생성하지 않아도 된다.
    • 반환 타입의 하위 타입 객체도 반환 할 수 있다.
    • 입력 매개변수에 따라 다른 클래스 객체를 반환 할 수 있다.
    • 정적 팩토리 메서드를 작성하는 시점에서는 객체의 클래스가 존재하지 않아도 된다.(?)
  • 단점
    • 정적 팩토리 메서드만 제공한다면 하위 클래스를 만들 수 없다(?)
    • 불변 타입으로 사용할 수 있어서 오히려 좋아
    • 프로그래머가 찾기 어렵다
    • API 문서로 보완하기도 함

아이템 2. Builder 사용

  • 생성자나 정적 팩토리 메서드의 매개변수가 많다면 Builder를 사용하라
  • 롬복 없이 빌더 패턴을 구현할 수 있어야하겠지...?

아이템 3. private 생성자와 열거 타입으로 싱글턴 임을 보증

public class Elvis {
    private static final Elvis INSTANCE = new Elvis();
    private Elvis() {...}
    public static Elvis getInstance() { 
        if (INSTANCE == null) {
            INSTANCE = new Elvis();
        }
        return INSTANCE; 
    }
}
  • 열거 타입으로 하는 방법은 잘모르겠다..
반응형

'책 읽기 > IT 기술 도서' 카테고리의 다른 글

[자바 성능 튜닝 이야기] 읽고난 후  (0) 2022.10.07