我需要在支持多种数据类型(不能使用模板)的同时尊重 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)
...
};