프로그램 아키텍쳐/디자인패턴

팩토리 메소드 ( The Factory Method )

본클라쓰 2009. 10. 28. 14:49

 팩토리 패턴은 인자를 통한 유연한 객체 생성 방법을 제공한다. 하는 일은 같지만 처리하는 방법이 다른 유사한 객체들이 필요한 경우 팩토리 패턴은 유연한 접근 방법을 제공한다.


 예를 들어 이름을 성과 이름으로 구별하여 출력하고자 하는 경우, 성+이름 으로 데이터가 입력될 경우 처리하는 클래스, 이름+성 순으로 데이터가 입력될 경우 처리하는 클래스를 작성한 후 팩토리 패턴을 통해 처리결과를 손쉽게 얻을 수 있다.

 



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 위 그림과 같이 Name 추상 클래스를 상속받아 구현아 FirstLast 클래스와, LastFirst 클래스가 있다면 팩토리 패턴에서 팩토리 클래스는 FirstLast클래스와 LastFirst 클래스의 생성을 따로 관리 하는 방법을 제공한다.


 팩토리 클래스는 인자로 전달되는 값을 통해 FirstLast 클래스를 생성할 것인지, LastFirst클래스를 생성할 것인지 결정하여 생성한 클래스를 반환한다. 이것이 팩토리 패턴이다.


 팩토리 패턴을 사용할 경우는 상황에 따라 생성할 클래스가 다른 경우에 팩토리 클래스가 해당 클래스를 생성하여 사용할 때이다. 즉, 같은 내용을 가지지만 형식이 다른경우에 사용한다. (즉, 인자를 통해 어떤 객체가 처리할 것인가를 정의하는 방법)


 



팩토리 클래스 코드

class NameFactory {


    public getClass(String arg) {

 

        if (인자를 비교하여 FirstaLast 클래스를 생성해야 할 경우) {

            return new FirstLast();

        } else {

            return new LastFirst();

        }

    }


}



실제 팩토리 클래스 사용

NameFactory nfactory = new NameFactory();

Name name = nfactory.getClass("인자");

name.getFirstName();

name.getLastName();