2

Flyweight パターンを使用して、クラスの複数のインスタンス間で特定の非静的変数を制限する複雑なオブジェクト設計を使用しています。両方のオブジェクト (flyweight 情報とそれを含むクラス) が Serializable であり、それらのカードのリストが wcf サービスからクライアントに転送される場合、クライアントはパターンを維持しますか (つまり、複数のインスタンスに対して flyweight 情報の 1 つのコピーのみ)上位クラスの)?うまく説明できない場合に備えて、以下に簡単なコード例を示します。

public class Flyweight
{
    public Image image;
}

public class SmallObject
{
    public Flyweight fly;
}

リストには 50 個以上の SmallObject が含まれていますが、Flyweight パターンを使用して、個別のオブジェクト タイプごとに十分なイメージのみを作成します。設計上の制限により、サブクラスで表現できないさまざまなタイプの SmallObjects があるため、静的変数にすることはできません。私が知る必要があるのは、クライアントが 50 個以上の個別の Flyweight オブジェクトを受け取ったのか、それともパターンが維持されていて、各タイプの Flyweight を 1 つしか受け取っていないのかということです。

4

1 に答える 1

1

パターンは保持されません。[OnDeserialized] を使用して、必要な参照を手動で再構築する必要があります。

于 2015-01-11T01:18:17.607 に答える