说我有代表所有本田,丰田,福特等汽车基础级的汽车基础。同样,我也有卡车基地(所有不同的车辆类别)。另外请注意,每辆本田汽车都有一些本田对象代表的共同属性。
现在,我想定义一个HondaCivic;理想情况下,它将是hondacivic : hondacar, hondabaseobject
,但是由于.net不允许多重继承,因此我正在考虑各种建模方法。
对象-
请参阅我提出的以下型号。我可以接受,但是由于某些原因,我不喜欢我定义的接口(IHondaBaseObject)
我刚刚定义了它,以便可以使用它处理所有本田车辆,因为我知道所有本田车辆都构成本田基础对象并执行了此合同。
有更好的方法来处理吗?
可能类似于HondaCivic<HondaBaseObject> : HondaCar
-但是处理起来很困难,因为我不能简单地转换HondaCivic<HondaBaseObject> as HondaBaseObject
-使用接口可以简单地交换类型。
看起来类似于Multiple inheritance in C#,基本上在c#中实现了多重继承
即HondaCivic:CarBase,HondaBaseObject<=> HondaCivic:CarBase,IHondabaseObject{HondaBaseObject本田;}
class vehicle
{
}
/// <summary>
/// Base class for all the cars (common fields and operations of car)
/// </summary>
class CarBase : vehicle
{
//parts
virtual steering steering {get;}
virtual void StartingTheCar(...)
//engine
}
class HondaCar : CarBase
{
//overrides
//specializations
}
class ToyotaCar : CarBase
{
//overrides
//specializations
}
class TruckBase : vehicle
{
//overrides
//specializations
}
class HondaTruck : TruckBase
{
//overrides
//specializations
}
class ToyotaTruck : TruckBase
{
//overrides
//specializations
}
//Is it necessary? - i introduces this so that as i want to access all types of hoda vehicles with a single type
//but having interface, just for the sake of handling doesnt make sense?
//i am not sure - but, looks like something is wrong.
interface IHondaBaseObject
{
}
/// <summary>
/// Object which contains the common attributes for each honda vehicle (say cars, suvs, trucks, bikes etc...)
/// </summary>
class HondaBaseObject
: IHondaBaseObject
{
string identity { get; set; }
public override bool Equals(object obj)
{
return base.Equals(obj);
}
public override int GetHashCode()
{
return base.GetHashCode();
}
}
//Now what is the best way to model it? should i use generics? or just a simple stragey pattern?
class HondaCivic : HondaCar, IHondaBaseObject
{
HondaCivic(HondaBaseObject ho)
{
}
public HondaBaseObject { get; }
}
说我有代表所有本田,丰田,福特等汽车基础级的汽车基础。同样,我也有卡车基地(所有不同的车辆类别)。另外请注意,每个...
只是想出一个假设的例子。请注意,每节课将有自己指定的字段和操作。例如:源自汽车的HondaCar可能会完全取代引擎正常工作,并具有自己的自定义零件。