這可能是一個初學者問題,但是有沒有一種標準的方法來將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; }
}
感謝
這就是問題所在。他不希望任何汽車有任何類型的車輪。他希望FastCars只有FastWheels,而SlowCars只有SlowWheels。一個接口不會完成這個。 – Joseph 2009-04-23 18:16:04
如果FastCar不能具有SlowCarWheel,那麼該邏輯屬於FastCar,而不屬於基類。 – 2009-04-23 18:22:42