2009-04-06 1 views
2
나는 그런 건설에 대한 정확한 정의에 대해 궁금

:정적 팩토리 메소드 또는 생성 방법

class A { 
public static A create() { 
    return new A(); 
} 

private A() { 
} 
} 

(항목 1) Effective Java에서와 wikipedia article에 내가 발견이 정적 공장 방법 (일종의라는 것을 공장 방법).

그러나 Refactoring to Patterns (6 장)을 읽는 동안 이라는 동일한 구성을 만났습니다. 작성 방법. 또한 팩토리 메서드 패턴으로 엉망이되어서는 안된다는 메모가 있습니다.

진실은 무엇입니까? 공장 메소드 -

답변

1

한 매개 변수가 접근 방법을 (enum으로 예) 및 파라미터 생성 메소드를 호출한다. 공장에서 더 강력하고 다양한 유형의 객체를 생성 할 수 있습니다.

매개 변수없는 방법을 사용하는 경우 호출 할 클래스의 다른 곳을 결정해야합니다. 매개 변수화 된 메서드를 사용하면이 논리를 메서드 자체에 전달할 수 있습니다. 따라서 후자 (팩터 리)는 생성 할 클래스 개체를 자체적으로 결정합니다.

+0

죄송합니다. 게시물의 작성 방법과 팩토리 방법의 실제 차이점을 가져 오지 못했습니다. 한번 더 설명해 주시겠습니까? –

+1

생성 메서드를 호출하려면 호출 할 클래스의 메서드 (B :: Create() 또는 C :: Create())를 결정해야합니다. 팩토리 메소드를 사용하면 클래스 F :: Create (매개 변수)에서 매개 변수는 예를 들어 enum 값이고 fcatory는 만들 클래스 개체를 결정합니다. – sharptooth

0

글쎄, 용어는 종종 저자마다 다르므로이 점에 대해 너무 걱정하지 않아도됩니다.

그러나 "Refactoring to Patterns"는 factory method pattern이 있기 때문에 이것을 "팩토리 메서드"라고 부르는 것에 대해 경고합니다. 팩토리 메소드 패턴은 단순한 팩토리 메소드가 아니기 때문에 혼동을 피하기 위해 다른 이름을 제안합니다.

"단순한 정적 팩토리"라고도 부를 수 있다고 생각합니다. 그러나 이것은 약간 말 (비표준)입니다.

1

작성 방법은 클래스의 인스턴스를 만드는 정적 또는 비 정적 방법입니다. 팩토리 메소드는 클래스 계층 구조에서 정의되고 구현 된 메소드이며, 생성은 다형성을 갖습니다.