본문 바로가기

디자인 패턴

팩토리 메소드 패턴(3) - 자바와 스프링에서 찾아보는 패턴

1) 팩토리 메소드 패턴, 실무에서 어떻게 쓰이나?

- 단순한 팩토리 메소드 패턴을 다음과 같이 만들 수 있습니다.

public class SimpleFactory{

  public Object createProduct(String name){
      if(name.equals("whiteship")){
         return new Whiteship();
      }else if(name.equals("blackship")){
         return new Blackship();
      }
      
      throw new IllegalArgumentException();
  }

}

- 자바에서 사용하는 Calendar 클래스가 이러한 방식으로 구현되어 있습니다. 

public class CalendarExample{

    public static void main(String[] args){
       System.out.println(Calendar.getInstance().getClass());
       System.out.println(Calendar.getInstance(Locale.forLanguageTag("th-TH-x-lvariant-TH")).getClass());
       System.out.println(Calendar.getInstance(Locale.forLanguageTag("ja-JP-x-lvariant-JP")).getClass());
    }
}

// 실행 결과
class java.util.GregorianCalendar
class sun.util.BuddhistCalendar
class java.util.JapaneseImperialCalendar

 

- 스프링이 제공하는 빈 팩토리도 팩토리 메소드 패턴을 구현하고 있다고 할 수 있습니다.

 

 

참고

- 백기선 코딩으로 학습하는 GoF의 디자인 패턴