2013-04-10 1 views
0

내가 필요 당신의 도움이 나는 하이퍼 그래프
하이퍼 그래프의 정점으로 표현 복잡한 네트워크가 다양한 유형이 있습니다 하십시오 : 태그 ....
내가 정점
을 수천을 만들어야합니다 이미지를, 수동으로 생성하기가 어려울 것입니다!
는 그래서 난 공장 패턴이 경우
나에게 도움이 될 수 있다고 생각하지만 각 정점 유형은 내가 생성자
공장 패턴은 기본 생성자로 객체를 생성합니까

때문에 팩토리 메소드는이 경우 올바른 선택이에 매개 변수로 전달해야 그 특정 예절이있다? quick diagram

답변

3

하나 이상의 매개 변수

Car blueCar = carFactory.create(CarColor.BLUE); 
Car redCar = carFactory.create(CarColor.RED); 

걸리는 만드는 방법 또는 여러 만드는 방법이 공장이 공장 아무 문제가 없습니다 :

Car blueCar = carFactory.createBlueCar(); 
Car redCar = carFactory.createRedCar(); 

대안으로는 유스 케이스에 따라 고려해야 할 가치가있는 팩토리는 빌더 패턴이다. 빌더는 하나의 매개없이 메소드를 작성했지만, 또한, 그것에 의해 생성 될 오브젝트의 속성 설정 방법 가지고 작성 방법은 실제 내부 객체를 생성 왼쪽 구현 세부 얼마나

carBuilder.setColor(CarColor.BLUE); 
Car blueCar = carBuilder.create(); 
carBuilder.setColor(CarColor.RED); 
Car redCar = carBuilder.create(); 

을 자신에게. 그것은 예를 들어 수 :

  • 이 매개 변수에 따라
  • 인스턴스화에게 그것의 속성을 다른 서브 클래스를 변경하려면 반환 된 객체에 대한 몇 가지 세터를 호출 한 다음 기본 생성자를 호출하고 매개 변수로 생성자를 호출
  • 또는 이러한 옵션의 조합
+0

팩토리와 빌더 패턴을 모두 사용할 수 있습니다. – nawara

+0

@nawara 물론입니다. 원하는 경우 위 세 패턴 모두를 하나의 Creator 객체에 결합하여 setter를 통해 일부 속성을 설정하고 여러 create 메소드를 만들고 create 메소드 중 일부를 추가 매개 변수가 필요하도록 만들 수 있습니다. 그러나 결과 코드가 읽기 쉽고 유지하기가 쉽지 않은 경우 다른 질문입니다. – Philipp

+0

그 아이디어를 적용하려고합니다 – nawara

0

팩토리 메서드는 일반적으로 만들 개체의 정확한 클래스를 지정하지 않고 개체를 만드는 데 사용됩니다 디.

다른 버텍스 구현이있는 경우이를 선택하는 것이 좋습니다.

+0

GOF 책에서 말했듯이 : "객체 생성을위한 인터페이스를 정의하지만 인터페이스를 구현하는 클래스가 어떤 클래스를 인스턴스화할지 결정하게합니다 .Factory 메소드를 사용하면 클래스가 인스턴스 생성을 지연 할 수 있습니다 서브 클래스로. " –

관련 문제