我需要尊重LSP,同时支持多种数据类型(模板不能使用),并且我在继承和组合之间存在两难选择。 如果我使用继承,则基类本身不能使用,必须每次都使用它。这会违反LSP吗?
继承将是:
enum eDataType{
FLOAT,
INT,
}
class IObject{
eDataType dataType;
...
};
class IntObject : IObject{
int paramA;
int paramB;
...
};
class FloatObject : IObject{
float paramA;
float paramB;
...
};
使用合成时,它看起来像:
struct IntObject{
int A;
int B;
}
struct FloatObject{
float A;
float B;
};
class Object{
eDataType dataType;
IntObject* intObject;
FloatObject* floatObject;
Object(eDataType dataType){
if(dataType == FLOAT){ floatObject = new FloatObject();}
...
}
void updateData(Message* incomingMessage){
if(dataType == FLOAT)
...
};