Study/Java

생성자 대신 static 팩토리 메소드 사용을 고려하자.

유쾌한순례자 2010. 11. 9. 01:04

static 팩토리 메소드

생성자와 달리 호출될때마다 매번 새로운 객체를 생성할 필요가없다.
자신이 반환하는 타입의 어떤 서브타입 객체도 반환할 수 있다.
자바 데이터베이스 연결 API(JDBC) 와 같은 서비스 제공자 프레임워크의 근간이 됨.
메소드를 정의한 클래스가 public 이나 protected 생성자를 제공하지 않으면, 다른 클래스가 이 클래스를 상속받을 수 없다.

public class Elvis{
  private static final Elvis INSTANCE = new Elvis();
  
  private Elvis(){  
  }
  
  //스태틱 메소드 사용
  public static Elvis getInstance(){
    return INSTANCE;
  }
  
  public void test(){
    System.out.println("test");
} } //Elvis.getInstance로 객체를 사용