我目前正在编写一个简单的游戏库,主要是为我自己使用。 现在我遇到了一个问题。我有一个名为“游戏”类,它看起来是这样的:在没有订阅的情况下触发一个事件
class Game
{
private List<Entity> entities;
private int counter;
public Game()
{
entities = new List<Entity>();
counter = 0;
}
public AddEntity(Entity entity_)
{
entities.Add(entity_);
// problem! how to inform entity_ that it was added?
counter++;
}
}
实体是每个在游戏中的作用对象必须从派生的类。其内容并不重要。我正在寻找的是一种让Game向新添加的entity_类通知其拥有者(当前Game实例)和它的id(这就是“counter”)的方法。现在我一直在考虑使用一个接口,它会有一个方法“OnAdd(Game owner_,int id_)”,因为这肯定会起作用,但是我想确保没有首选的方法。所以这是我的问题:
有没有比接口更好的解决方案,我的问题? Entity实例不知道它被添加到哪个Game实例,并且使用类似事件的方法在我眼中感觉不对。如果课程可能会出错。
聪明。 +1用于对象责任的“翻转”。 – KeithS 2012-02-24 16:18:18