2008-11-14 3 views
1

На протяжении многих лет, я думаю, я видел и пробовал каждый мыслимый способ создания структур данных-заглушек (поддельные данные) для сложных графиков объектов. Он всегда волосатый в java.Примеры создания структур данных-заглушек с динамическими языками JVM?

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

(Pardon дешевые UML)

Ключевой вопрос заключается в том, что есть определенные отношения между значениями, поэтому определенный экземпляр C может означать заданные значения для Е.

Любая попытка меня видно, что при применении одного шаблона или группы паттенов для решения этой проблемы в java в конечном итоге оказывается беспорядочным.

Я рассматриваю, что если отличный или любой из динамических языков vm может сделать лучшую работу. Должно быть возможно сделать вещи значительно проще с закрытием.

У кого-нибудь есть ссылки/примеры этой проблемы, которые были решены красиво (желательно) groovy или scala?

Редактировать: Я не знал, что «Мать объекта» - это имя шаблона, но это тот, с которым у меня возникают проблемы: когда структура объекта, которая должна быть создана материей объекта, достаточно сложна, всегда будет иметь довольно сложную внутреннюю структуру внутри самой материнской материнской части (или путем создания нескольких материнских объектов). Учитывая достаточно большую целевую структуру (скажем, 30 классов), найти структурированные способы реализации материнства (ов) объекта действительно сложно. Теперь, когда я знаю название шаблона, я могу google лучше;)

+0

Scala - не динамический язык. Он имеет множество функций одного, но на самом деле он еще более статичен и безопасен по типу, чем Java. – 2008-11-14 20:57:20

+0

Что касается вашего вопроса, я действительно не уверен, что вы спрашиваете. Вы говорите о динамически генерируемых данных для заполнения структур данных? – 2008-11-14 20:59:10

ответ

2

Возможно, вам понравится шаблон Object Mother. Я использовал это в моем проекте Groovy/Grails, чтобы помочь мне создать пример данных.

Это не характерный характер, но динамический язык часто может упростить создание чего-то подобного, используя утиную печать и закрытие.

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(); 

Как сказал Тед, это может быть улучшено/упрощена с динамическим языком.

Смежные вопросы