728x90
* 다음과 같이 public 생성자 대신(or 함께) 정적 팩토리 메서드를 제공할 수 있습니다.
Class Coffe{
private String name;
private int price;
public Coffee(String name, int price){ //생성자
this.name = name;
this.price = price;
}
public static Coffee Americano(){ //정적 펙토리 메서드
return new Coffee("Americano", 4100);
}
public static Coffee Latte(){
return new Coffe("Latte", 4800);
}
}
장점
1. 이름을 가질 수 있어 반환될 객체의 특성을 쉽게 묘사할 수 있습니다.
2. 호출될 때마다 인스턴스를 새로 생성하지 않아도 됩니다.
- 인스턴스를 통제할 수 있습니다. (싱글턴, 인스턴스화 불가하게 만들 수 있음)
3. 반환 타입의 하위 타입 객체를 반환할 수 있습니다.
4. 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있다.
5. 정적 팩토리 메서드를 작성하는 시점에는 반환할 객체의 클래스가 존재하지 않아도 됩니다.
단점
1. public or protected 생성자가 필요합니다.
2. 정적 팩토리 메서드를 프로그래머가 찾기 어렵습니다.
* Effective JAVA를 정리한 내용입니다.
728x90
'Effective JAVA' 카테고리의 다른 글
4. 인스턴스화를 막으려거든 private 생성자를 사용하라 (0) | 2021.08.22 |
---|---|
3. private 생성자나 열거 타입으로 싱글턴임을 보증하라 (0) | 2021.08.22 |
2. 생성자에 매개변수가 많다면 빌더를 고려하라 (0) | 2021.08.22 |
댓글