どのクラスが特定の情報を保持する必要があるかについてのガイダンスが欲しいです。「宇宙物体」内を動き回る「移動物体」がある場合、その移動物体は宇宙物体内のどこにあるか、どれだけ速く動いているか、どの方向に移動しているかを本当に気にしますか?
「場所」のモバイル オブジェクトにプロパティを割り当てると確かに便利に思えますが、実際には気にする必要はないと思います。だから私は思いついた:
class Mobile
{
//some properties/fields/etc
event EventHandler<MovementEventArgs> move;
public void Move(Vector direction)
{
raiseMove(direction);
}
private raiseMove(Vector direction)
{
EventHandler<MovementEventArgs> handler = move;
if (move != null)
handler(this, New MovementEventArgs(direction));
}
}
class Space
{
Mobile someObject;
Vector someObjectLocation;
public Space()
{
someObject = new someObject();
someObject.Move += HandleMobileMove;
}
public void MoveSomeObject(Vector direction)
{
someObject.Move(new Vector(1,0));
}
private void HandleMobileMove(object sender, MovementEventArgs e)
{
someObjectLocation += e.Direction;
}
}
少し性急に書いてしまいましたが…私の言いたいことが伝わってれば幸いです。要約すると、モバイルは場所を保持する必要がありますか、それともスペースを保持する必要がありますか? 誰が動きを制御する必要がありますか?