public enum AbsoluteDirection { North=0, East, South, West }
public enum RelativeDirection { Right, Left, Back }
public interface IVehicleControl
{
void RequestAccelerate(int amount);
void RequestDecelerate(int amount);
void RequestTurn(RelativeDirection dir);
}
public interface IVehicleModel
{
string Name { get; set; }
int Speed { get; set; }
int MaxSpeed { get; }
int MaxTurnSpeed { get; }
int MaxReverseSpeed { get; }
AbsoluteDirection Direction { get; set; }
void Accelerate(int amount);
void Decelerate(int amount);
void Turn(RelativeDirection dir);
}
public interface IVehicleView
{
void DisableAcceleration(); void EnableAcceleration();
void DisableDeceleration(); void EnableDeceleration();
void DisableTurning(); void EnableTurning();
}
Model 實作 AddObserver/RemoveObserver,狀態變更時通知所有觀察者 (View) 更新介面,避免輪詢。