LSP:继承与组合

时间:2015-01-21 21:49:26

标签: c++ oop inheritance composition liskov-substitution-principle

我需要尊重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)
    ...

};

0 个答案:

没有答案