私のエージェントには多くの動作があり、その数と構成は事前にわかりません。動作は、システムまたはエージェント自体のいくつかのイベントに応答するアクションのアルゴリズムです。私はそのようなことをしたいと思います:
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();
...
}
}
問題は、行動から必要なデータを取得できないことです。柔軟性を節約し、必要なデータを一度に取得するために使用できるメカニズムを教えてください。エージェントに機能を追加する可能性を節約したいと考えています。