본문 바로가기
Effective JAVA

1. 생성자 대신 정적 팩토리 메서드를 고려하라

by 상국이 2021. 8. 22.
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

댓글