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