这可能是一个初学者问题,但是否有一种标准方法可以将 Wheel 属性的复制重构到抽象类中,同时仍然保持对 Part 类型的显式转换。假设我们必须防止将 FastCarWheel 放在 SlowCar 上,并且有许多属性与此类似。
abstract class Car {}
class FastCar : Car
{
public FastCarWheel Wheel { get; set; }
}
class SlowCar : Car
{
public SlowCarWheel Wheel { get; set; }
}
abstract class WheelPart {}
class FastCarWheel: WheelPart {}
class SlowCarWheel: WheelPart {}
在这种情况下,只允许这种类型的复制是否很常见?我正在考虑使用泛型,但看起来我只是在转移这个问题,而且每增加一个以这种方式表现的属性,情况就会变得更糟。
abstract class Car <P>
where P : Part
{
protected abstract P Wheel { get; set; }
}
谢谢
最佳答案
我认为使用Fast
或Slow
policy可以帮助为给定的汽车类型放置正确的车轮(其中 Car
和 Wheel
都取决于策略,并且 Car
对象具有,比如说,一个私有(private)的轮子集合)。
关于c# - 关于重构为抽象类的基本问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/782906/