2

我正在使用一个复杂的对象设计,我使用享元模式来限制类的多个实例之间的某些非静态变量。如果两个对象(享元信息和包含它的类)都是可序列化的,并且这些卡的列表从 wcf 服务传输到客户端,则客户端是否维护模式(即多个实例的享元信息只有一个副本高级别的)?我将在下面给出一个小代码示例,以防我不能很好地解释自己。

public class Flyweight
{
    public Image image;
}

public class SmallObject
{
    public Flyweight fly;
}

其中一个列表包含 50 多个 SmallObject,但使用享元模式仅为每种单独类型的对象创建足够的图像。它不能是静态变量,因为由于设计限制,有不同类型的 SmallObjects 不能用子类表示。我需要知道的是客户是否收到 50 多个离散的享元对象,或者保持模式并且他只收到每种类型的 1 个享元。

4

1 回答 1

1

模式未保持。您需要使用 [OnDeserialized] 手动重新构建所需的引用。

于 2015-01-11T01:18:17.607 回答