2008-11-14 7 views
1

Au cours des années, je pense avoir vu et essayé toutes les manières imaginables de générer des structures de données stub (fausses données) pour des graphes d'objets complexes. Il devient toujours poilu en java.Exemples de création de structures de données stub avec des langages JVM dynamiques?

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

(UML pas cher Pardon)

La question clé est qu'il ya certaines relations entre les valeurs, donc une certaine instance de C peut avoir pour corollaire des valeurs données pour E.

Toute tentative je vu à l'application d'un seul motif ou groupe de patins pour résoudre ce problème en Java finissent par être en désordre.

Je considère si groovy ou l'un des langages vm dynamiques peut faire un meilleur travail. Il devrait être possible de faire les choses beaucoup plus facilement avec les fermetures.

Quelqu'un at-il des références/exemples de ce problème résolus avec (de préférence) groovy ou scala? Je ne connaissais pas "Object Mother" était le nom du pattern, mais c'est celui avec lequel j'ai des problèmes: Quand la structure d'objet à générer par la Object Mother est suffisamment complexe, vous ' ll finira toujours avec une structure interne assez complexe à l'intérieur de la Mère Objet elle-même (ou en composant plusieurs Mères Objet). Étant donné une structure cible suffisamment grande (disons 30 classes), il est très difficile de trouver des moyens structurés pour implémenter la ou les mère (s) objet (s). Maintenant que je connais le nom du modèle je peux google mieux cependant;)

+0

Scala n'est pas une langue dynamique. Il a beaucoup de fonctionnalités, mais il est en fait encore plus statique et sécurisé que Java. –

+0

En ce qui concerne votre question, je ne sais pas vraiment ce que vous demandez. Parlez-vous des données générées dynamiquement pour remplir les structures de données? –

Répondre

2

Vous pourriez trouver le modèle Object Mother pour être utile. J'ai utilisé ceci sur mon projet actuel Groovy/Grails pour m'aider à créer des exemples de données.

Ce n'est pas spécifique groovy, mais un langage dynamique peut souvent rendre plus facile de créer quelque chose comme ça en utilisant le typage et les fermetures de canard.

+0

Merci pour le nom du motif. Maintenant, google peut m'aider – krosenvold

1

Je crée typiquement des mères d'objet en utilisant le modèle de constructeur.

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; 
    } 

} 

Ensuite, il peut être utilisé comme ceci:

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

Comme Ted dit, cela peut être amélioré/simplifié avec un langage dynamique.

Questions connexes