0

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

};
4

0 回答 0