Java 使用动态JVM语言创建存根数据结构的示例?
多年来,我想我已经看到并尝试过为复杂对象图生成存根数据结构(伪数据)的每一种可能的方法。在爪哇,它总是变得毛茸茸的Java 使用动态JVM语言创建存根数据结构的示例?,java,algorithm,scala,groovy,stub-data-generation,Java,Algorithm,Scala,Groovy,Stub Data Generation,多年来,我想我已经看到并尝试过为复杂对象图生成存根数据结构(伪数据)的每一种可能的方法。在爪哇,它总是变得毛茸茸的 * * * * A---B----C----D----E (请原谅) 关键问题是这些值之间存在一定的关系,因此C的某个实例可能意味着E的给定值 我所看到的在java中应用单个模式或一组模式来解决这个问题的任何尝试最终都会导致混乱 我正在考虑groovy或任何一种动态vm语言是否能做得更好。使用闭包应该可以使事情简单得多 有没有关于这个问题的参考资料/例子可
* * * *
A---B----C----D----E
(请原谅)
关键问题是这些值之间存在一定的关系,因此C的某个实例可能意味着E的给定值
我所看到的在java中应用单个模式或一组模式来解决这个问题的任何尝试最终都会导致混乱
我正在考虑groovy或任何一种动态vm语言是否能做得更好。使用闭包应该可以使事情简单得多
有没有关于这个问题的参考资料/例子可以用groovy或scala(最好)很好地解决
编辑:
我不知道“对象母亲”是模式的名称,但这正是我遇到的问题:当对象母亲生成的对象结构足够复杂时,在对象母亲本身内部总是会有一个相当复杂的内部结构(或通过组合多个对象母亲)。给定一个足够大的目标结构(比如说30个类),找到实现对象母亲的结构化方法是非常困难的。现在我知道了模式的名称,我可以用谷歌更好地搜索它;) 您可能会发现该模式很有用。我在当前的Groovy/Grails项目中使用了它来帮助我创建示例数据
它不是特定于groovy的,但是动态语言通常可以使使用duck类型和闭包创建类似的内容变得更容易。我通常使用builder模式创建对象
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();
正如Ted所说,这可以用动态语言来改进/简化。Scala不是动态语言。它有很多特性,但事实上它比Java更静态和类型安全。您是在谈论动态生成的数据来填充数据结构吗?