2009-11-06 3 views

답변

5

오래된 질문에 대한 답변 생성자를 같은 DfQuery 같은 개체의 새로운 인스턴스를 얻기 위해 com.documentum.com.DfClientX 공장 클래스를 사용하는 대신 직접 호출하는 것을 권장하지만, 원래의 포스터는 라인이 무엇을 의미하는지 물었고, 어떤 대안이 사용될 수 있는지에 대해 물어 보지 않았습니다.

라인은 DFCUtils 클래스 내의 정적 팩토리 메소드로 생성 된 객체의 인스턴스 내에있는 팩토리 메소드에서 IDfQuery 구현의 인스턴스를 만듭니다. 이 객체는 변수에 할당됩니다.

그래서 : -

  • DfcUtils이 getClientX라는 정적 메소드를 포함하는 클래스 =()
  • getClientX()는 객체
  • getQuery의 인스턴스 을 돌려주는 static 팩토리 메소드를 (=) = getClientX()에 의해 반환 된 객체 내의 팩토리 메소드로, IDfQuery를 구현하는 객체를 반환합니다.
  • 질의 새로운 IDfQuery 인스턴스 메소드/함수 getQuery()는 규칙 또는 구성 설정에 기초하여, 반환 오브젝트 유형을 결정이 일반 공장 패턴

를 참조하는 데 사용되는 변수 =. 이것은 인터페이스의 여러 구현을 사용할 수있을 때 구체적인 클래스의 인스턴스를 만드는 것보다 바람직합니다. 일반적으로 팩토리는 객체를 반환하기 전에 속성을 초기화하는 클래스 부트 스트 래퍼처럼 작동합니다.

public static IDfQuery getQuery(){ 
    IDfQuery returnValue; 

    switch (getDayOfWeek()) { 
     case "Monday" : returnValue = new MondayQuery(); break; 
     case "Tuesday" : returnValue = new TuesdayQuery(); break; 
     case "Wednesday" : returnValue = new WednesdayQuery(); break; 
     case "Thursday" : returnValue = new ThursdayQuery(); break; 
     case "Friday" : returnValue = new FridayQuery(); break; 
     case "Saturday" : returnValue = new SaturdayQuery(); break; 
     case "Sunday" : returnValue = new SundayQuery(); break; 
     default: returnValue = null; break; 
    } 

    return returnValue; 
} 

public static String getDayOfWeek(){ 
    return new SimpleDateFormat("EEEE").format(new Date()); 
} 
+0

당신은 내 대답의 요점을 놓쳤습니다. 여기는 공장 패턴이 아닙니다. 그것은 정확히 'new DfQuery()'입니다. 마찬가지로 코드는 VB에서와 같은 방식으로 Java에서 동일한 작업을 수행 할 수 있습니다. –

6

안전하게

IDfQuery query = new DfQuery(); 

팩토리 메소드와 그 접근 방식으로 자바를 대체 할 수있는 어떤 COM에 의해 제약있어 이전 Docbasic의 일 또는

+0

죄송 새로운 더 나은 대답은 -이 :

기본적으로, 당신은 어느 구현이 IOC (제어의 반전)로 반환 알고 선택 스위치 문으로 조건을 포함하는 팩토리 메소드를 가질 수있다 오는! Abooth가 더 낫고 강하고 빠르다고 설명합니다. #daftpunkstyle – enguerran

+0

공장 패턴을 더 잘 설명합니다. 그러나 여기서 공장 패턴은 EMC Documentum 코드의 동기가 아닙니다. COM은 –

0

한 캔을 할 수는 없습니다 온다

IDfQuery query = new DfQuery(); 

접근 방식

현재 DFC 가이드는, 그러나 명확하게

관련 문제