我有这样的界面
class IVersion
{
public:
virtual char * get_version() const = 0;
virtual bool is_compatible(const IVersion& other) const = 0;
};
我有一组“设备”类,所有这些类都需要支持上述接口,以便我可以检查设备之间的兼容性。为此,我从上述 IVersion 类公开继承了每个设备。
现在,由于我继承自 IVersion(以及 Liskov 替换原则),这意味着设备是版本。但我想要的实际关系是设备有一个版本。
我希望所有设备都支持 IVersion 中的方法,但我认为我这样做的方式是不正确的。任何人都可以提出更好的方法吗?我可以使用组合,但是现在我需要在 IVersion 中添加方法,将其添加到设备基类中,然后在内部使用 IDevice 实现。这是完成我想要实现的目标的最佳方式吗?