2008-11-14 5 views
1

수년 동안 복잡한 개체 그래프를위한 스텁 (stub) 데이터 구조 (가짜 데이터)를 생성하는 모든 방법을 보아서 시도해 보았습니다. 그것은 항상 자바에서 털이 있습니다.동적 JVM 언어로 스텁 데이터 구조를 생성하는 예는 무엇입니까?

* * * * 
A---B----C----D----E 

(사면 싼 UML)

중요한 문제는 값 사이에 어떤 관계가 그래서 C의 특정 인스턴스가 주어진 의미 할 수있는 값은 E.

내가 가지고있는 시도를 들어 있다는 것입니다 자바에서이 문제를 해결하기 위해 단일 패턴이나 패튼 그룹을 적용 할 때 궁극적으로 지저분해진다.

groovy 나 역동적 인 vm 언어가 더 잘할 수 있는지 생각하고 있습니다. 클로저를 사용하면 훨씬 간단하게 작업을 수행 할 수 있어야합니다.

누구나이 문제에 대한 참조/예는 groovy 또는 scala로 멋지게 해결 되었습니까?

편집 : "개체 마더"는 패턴의 이름 이었지만 나는 문제가있는 것 같습니다. 개체 마더에 의해 생성 된 개체 구조가 충분히 복잡 할 때, 결국 Object Mother 자체 내부에서 (또는 여러 Object Mothers를 구성하여) 꽤 복잡한 내부 구조로 끝을 맺을 것입니다. 충분히 큰 목표 구조 (30 개 클래스라고 말함)가 주어지면, 객체 모성을 구현하는 구조화 된 방법을 찾는 것은 정말로 어렵습니다. 이제 나는 패턴의 이름을 알았으므로 더 잘 할 수있다.)

+0

스칼라는 동적 언어가 아닙니다. 그것은 하나의 기능을 많이 가지고 있지만 실제로 자바보다 더 정적이며 유형 안전합니다. –

+0

귀하의 질문에 관해서, 나는 당신이 무엇을 요구하고 있는지 정말로 확신하지 못합니다. 데이터 구조를 채우기 위해 동적으로 생성 된 데이터에 대해 이야기하고 있습니까? –

답변

2

유용한 패턴은 Object Mother이다. 현재 Groovy/Grails 프로젝트에서 이것을 사용하여 예제 데이터를 만들었습니다.

그루비 특유의 것이 아니지만, 동적 언어를 사용하면 덕 타이핑 및 클로저를 사용하여 이와 같은 것을 쉽게 만들 수 있습니다.

+0

패턴 이름을 알려 주셔서 감사합니다. 이제 Google이 나를 도울 수 있습니다. – krosenvold

1

나는 일반적으로 빌더 패턴을 사용하여 오브젝트 마더를 작성합니다. 그 다음은 이와 같이 사용될 수있다

public class ItineraryObjectMother 
{ 
    Status status; 
    private long departureTime; 

    public ItineraryObjectMother() 
    { 
     status = new Status("BLAH"); 
     departureTime = 123456L; 
    } 
    public Itinerary build() 
    { 
     Itinerary itinerary = new Itinerary(status); 
     itinerary.setDepartureTime(departureTime); 
     return itinerary; 
    } 
    public ItineraryObjectMother status(Status status) 
    { 
     this.status = status; 
     return this; 
    } 
    public ItineraryObjectMother departs(long departureTime) 
    { 
     this.departureTime = departureTime; 
     return this; 
    } 

} 

:

Itinerary i1 = new ItineraryObjectMother().departs(1234L).status(someStatus).build(); 
Itinerary i2 = new ItineraryObjectMother().departs(1234L).build(); 

테드 말했듯이 향상시킬 수/동적 언어 단순화.

관련 문제