“主对象”需要在没有数据库调用的情况下存在

时间:2010-08-31 15:03:01

标签: c# entity-framework-4

我们正在构建游戏,因此可以帮助将对象更好地置于上下文中。

我的情况是我有这样的结构......

- Template
  - Data(ICollection<Statistics>)

  - Character: Template
    - Data (ICollection<Statistics>)

详细阐述...... 让我们假设每个角色都有一个属性“健康”。现在,“健康”的默认值为15。

现在让我们假设每个角色都以此开头。作为其生命周期中的角色,它可能会使用新值添加到“健康”。但是他们仍然需要保留默认参考。

现在,'角色'从'模板'继承默认值,但每个角色都有自己的一组数据追加默认值。原始继承不起作用,因为Item附加,它不会覆盖。原始默认值仍然存在。

可以像这样解决它..

- Character
 - Template
 - Data (ICollection<Statistic>)

但这对我来说是多余的。它需要大量额外的数据库调用。基本上每次调用一个项都必须执行两次相同的代码,因为它也必须构造一个Template对象。

有更合乎逻辑的方法吗?

1 个答案:

答案 0 :(得分:1)

如果我正确理解你,听起来你想在模板中有静态值,然后动态更新这些值的继承者?如果所有字符都需要具有相同的默认数据,您可以这样做吗?

abstract class Template { 
    ICollection<Statistics> DefaultData;
}

class CharacterTemplate : Template { 
    private CharacterTemplate() {
        //appropriate data initialization
    }

    private static readonly CharacterTemplate _instance = new CharacterTemplate();
    public static Template Instance { get { return _instance; } }
}

class Character { 
    Template template = CharacterTemplate.Instance; /* CharacterTemplate */
    ICollection<Statistics> Data ;
}

让Template实现者实现Singleton模式,你必须最多从数据库初始化一次。

有关单身人士模式的背景,请查看维基百科:http://en.wikipedia.org/wiki/Singleton_pattern#C.23