我在学习如何有效地使用接口和基类。我不确定在哪里放置共同的属性?只有行为属于界面吗?如果像Color和MinSpeed这样的属性不应该进入界面,他们应该在哪里生活?在抽象类中?建模OOP时,属性应该在哪里?小示例包括
public interface IVehicle
{
void Speed();
void Clean();
void Stop();
}
public class Bmw : IVehicle
{
// Because these pertain to every vehicle no matter of maker,
// should these propertes go in the interface? Or in an abstract class?
public string Color { get; set; }
public int MinSpeed { get; set; }
#region IVehicle Members
public void Speed()
{
}
public void Clean()
{
}
public void Stop()
{
}
#endregion
}
请注意属性_are_行为,作为属性是getter/setter。虽然有强烈的期望,获取/设置一个属性的行为是以“类似数据”的方式进行,但没有义务确定某个属性实际上“包含”了数据。这里真正的问题是需要访问改变这些属性的行为;考虑一下你的接口的预期用例,这会让你了解通过接口公开“属性数据”是否合理。 –