我想要一些关于哪个类应该保存某些信息的指导。如果我有一个在“空间对象”内四处移动的“移动对象”,移动对象是否真的关心它在空间对象中的位置、移动的速度以及向哪个方向移动?
将属性分配给“位置”的移动对象当然看起来很方便,但我认为它确实对此没有任何顾虑。所以我想出了:
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;
}
}
写的有点仓促……但我希望它能传达我的意思。总而言之:手机应该拥有一个位置,还是空间?谁应该控制运动?