假设我们有一个汽车,轮子和刹车类。汽车“有”四个轮子所以当创建一个Car实例时,我想要同时创建4个轮子实例。同样,如果我正在创建一个摩托车,我希望创建两个轮子实例。我的问题是如何在创建Car类时最好地创建Wheel实例并命名它们?
现在假设您要将制动器分配给特定的车轮 - 即:FrontBrakes连接到frontLeft,frontRight车轮。我应该尝试在Wheel类中创建一个名为AttachedTo的属性吗?如何分配所有权,以便说明特定车轮的刹车?
public class Car
{
public Car()
{
Wheel frontLeft = new Wheel();
Wheel frontRight = new Wheel();
Wheel backLeft = new Wheel();
Wheel backRight = new Wheel();
Brake frontBrakes = new Brake();
Brake backBrakes = new Brake();
}
}
public class Wheel
{
public int Size;
public string Brand;
public Brake AttachedTo { get; set; }
}
public class Brake
{
public string Type;
}
答案 0 :(得分:3)
绝对不要附属于财产。我只是将轮子作为适当类的属性,但是一个名为attach的属性是一种尴尬的方法。
这看起来很好用于Builder模式 http://www.dofactory.com/Patterns/PatternBuilder.aspx
通常使用SOLID并且更喜欢组合而不是继承。 http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)
答案 1 :(得分:0)
我建议汽车没有直接刹车,汽车有轮子,车轮有刹车。
我还建议您使用FrontWheel和BackWheel子类化Wheel。如果你不这样做,那么至少,wheel应该有一个FrontOrBack属性,这需要在构造函数中指定。
答案 2 :(得分:0)
由于车轮位置和制动类型是常数,因此枚举可能是合适的。然后车轮位置和制动类型将成为车轮类中的属性。将braketype设为只读,并根据车轮位置在构造函数中设置它。