2011-09-13 2 views
1

나는 디자인 패턴의 초보자입니다.
ClassA의 인스턴스를 만들고 설정 파일에서 읽은 값으로 일부 필드를 설정하려고합니다.
값을 사용하여 파일을 관리하는 코드와 클래스의 코드를 구별하면 ClassA는 순수한 "비즈니스 논리"클래스가됩니다.

파일에서 데이터를로드하는 클래스를 초기화합니다. 빌더입니까?

class ClassA { 
    boolean config1; 
    String originDB; 
    String destDB; 
    //other fields not initialized at the construction time 
    } 

    class ClassAFactory { 
    boolean config1; 
    String originDB; 
    String destDB;   

    public ClassAFactory { 
     //constructor of the class factory 
     //load config values from file 
    } 

    public ClassA newInstance() { 
    //create a new instance of ClassA and config fields config1, originDB, destDB 
    } 

    } 

내가 빌더 너무 "뿐만 아니라 인스턴스화"하지만 초기화 돌봐 것 때문에이 빌더 패턴이라고 말할 것입니다.
그러나 그렇지 않은 경우, 빌더는 작성 프로세스를 단계적으로 중단하는 데 초점을 두는 것처럼 보이지만, 제 경우에는 단 하나의 (아직 복합적인) 단계 만 있습니다.

빌더 패턴으로 간주 될 수 있습니까? 아니면 뭔가 다른가요?

+1

그냥 나에게 공장 같은데하지 ... –

답변

1

Builder보다 Factory 패턴과 비슷합니다. 이것은 모든 작업을 수행하는 유일한 방법이 있기 때문입니다. 일반적으로 빌더는 세팅 스타일의 메소드를 가지고있어 빌드되는 객체를 커스터마이징 할 수 있습니다.

+0

팩토리 메소드 패턴이 될 것으로 보인다 때문에 내가 너무 공장 패턴에 생각 나는이 방향 감각을 잃은했습니다 인터페이스의 다른 구체적인 구현으로부터의 단열에 중점을 두었다. 내가 갖고 있지 않은 모든 것들. – AgostinoX

+1

아래 @ gnat의 설명은 훌륭한 설명을 해 준다고 생각합니다. –

2

단계 - 아니 Builder

ClassA a = ClassABuilder 
      .config(config1) 
      .originDB(originDB) 
      .destDB(destDB) 
      .build(); 
    // above reads a Builder to me and hopefully to any reader 
    // note above allows to swap, add, remove particular steps 


    ClassA a = ClassAFactory.newInstance(); 
    // above reads Factory to me and hopefully to any reader 
    // note for reader, it's a one-step thing 
+0

또한 빌더는 일반적으로 객체 그래프를 작성합니다. 예 : 머리글, 꼬리말, 제목 및 일부 단락을 고려한 문서. 좋은 예 : +1 –

관련 문제