我的代理中有许多行为,其数量和组成事先不知道。行为是响应系统或代理本身中的某些事件的动作算法。我想做这样的事情:
public abstract class AbstractBehaviour
{
... // etc
public abstract void Do();
}
class ConcreteBehaviour1 : AbstractBehaviour
{ ...//fields etc
public void Do() { ... }
}
class ConcreteBehaviour2 : AbstractBehaviour
{
...//fields etc
public void Do() { ... }
}
public class Agent : IAgent
{
private Dictionary<String, AbstractBehaviour> Behaviours;
private Type1 Field1;
private Type2 Firld2;
public void Algorithm( ... )
{
Behaviours[NeccessaryBehaviour1].Do();
Agent.Filed1 = Behaviours[NeccessaryBehaviour1].GetData();
Behaviours[NeccessaryBehaviour111].Do();
Agent.Filed2 = Behaviours[NeccessaryBehaviour111].GetData();
...
}
}
问题是我无法从行为中获取必要的数据。您能否说出可以使用什么机制来节省灵活性并立即获取必要的数据?我想节省为我的代理添加功能的可能性。