我们正在构建游戏,因此可以帮助将对象更好地置于上下文中。
我的情况是我有这样的结构......
- Template
- Data(ICollection<Statistics>)
- Character: Template
- Data (ICollection<Statistics>)
详细阐述...... 让我们假设每个角色都有一个属性“健康”。现在,“健康”的默认值为15。
现在让我们假设每个角色都以此开头。作为其生命周期中的角色,它可能会使用新值添加到“健康”。但是他们仍然需要保留默认参考。
现在,'角色'从'模板'继承默认值,但每个角色都有自己的一组数据追加默认值。原始继承不起作用,因为Item附加,它不会覆盖。原始默认值仍然存在。
我可以像这样解决它..
- Character
- Template
- Data (ICollection<Statistic>)
但这对我来说是多余的。它需要大量额外的数据库调用。基本上每次调用一个项都必须执行两次相同的代码,因为它也必须构造一个Template对象。
有更合乎逻辑的方法吗?
答案 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