0

假设我们有一个 Car、Wheel 和 Brakes 类。一辆汽车“有”四个轮子,所以当创建一个 Car 实例时,我想要同时创建 4 个 Wheels 实例。同样,如果我正在创建摩托车,我会想要创建两个 Wheels 实例。我的问题是如何在创建 Car 类时最好地创建 Wheel 实例并命名它们?

现在假设您要将刹车分配给特定的车轮,即:FrontBrakes 连接到 frontLeft、frontRight Wheels。我应该尝试在 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;
}
4

3 回答 3

3

绝对不要附在财产上。我只是将轮子作为适当类的属性,但是称为附加的属性是一种尴尬的方法。

这看起来很好地使用了 Builder 模式。
http://www.dofactory.com/Patterns/PatternBuilder.aspx

通常使用 SOLID 并且更喜欢组合而不是继承。 http://en.wikipedia.org/wiki/SOLID_(面向对象设计)

于 2013-07-09T17:13:28.677 回答
0

由于车轮位置和制动类型是常数,因此枚举可能是合适的。然后车轮位置和制动类型将是车轮类中的属性。将刹车类型设为只读,并根据车轮位置在构造函数中设置。

于 2013-07-09T17:56:39.453 回答
0

我建议汽车没有直接刹车,汽车有轮子,轮子有刹车。

我还建议您将 Wheel 子类化为 FrontWheel 和 BackWheel。如果你不这样做,那么至少,wheel 应该有一个 FrontOrBack 属性,这需要在构造函数中指定。

于 2013-07-09T17:47:01.857 回答