1

何年にもわたって、複雑なオブジェクト グラフのスタブ データ構造 (偽のデータ) を生成する考えられるすべての方法を見て、試してきたと思います。Javaでは常に毛むくじゃらになります。

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

(安価なUMLを許してください)

重要な問題は、値の間に特定の関係があるため、C の特定のインスタンスが E の特定の値を暗示している可能性があることです。

Java でこの問題を解決するために単一のパターンまたはパターンのグループを適用しようとする試みは、最終的には面倒です。

groovy または動的な vm 言語のいずれかがより良い仕事をすることができるかどうかを検討しています。クロージャーを使用すると、物事を大幅に簡素化できるはずです。

(できれば)groovyまたはscalaでうまく解決されたこの問題の参照/例はありますか?

編集:「オブジェクトマザー」がパターンの名前だとは知りませんでしたが、それは私が問題を抱えているものです:オブジェクトマザーによって生成されるオブジェクト構造が十分に複雑な場合、常にオブジェクトマザー自体の内部のかなり複雑な内部構造 (または複数のオブジェクトマザーを構成することによる)。十分に大きなターゲット構造 (たとえば 30 クラス) を考えると、オブジェクトの母を実装する構造化された方法を見つけるのは非常に困難です。パターンの名前がわかったので、もっとうまくグーグルで検索できます;)

4

2 に答える 2

2

Object Motherパターンが役立つ場合があります。現在の Groovy/Grails プロジェクトでこれを使用して、サンプル データを作成しました。

グルーヴィーに特化したものではありませんが、動的言語を使用すると、ダックタイピングとクロージャーを使用して、このようなものを簡単に作成できることがよくあります。

于 2008-11-15T03:05:33.677 に答える
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();

テッドが言ったように、これは動的言語で改善/簡素化できます。

于 2010-04-09T22:06:26.430 に答える