我有一个 C++ 类,它描述了对象在 3D 空间中的方向 - 位置、旋转、比例等。我还有其他类需要类似的信息(或其子集) - 模型、地形、相机等。现在我可以创建我的方向类的那些子类,但谷歌告诉我更喜欢组合而不是继承。这在哲学上是有道理的——模型不是一个方向,它有一个(是的,我知道 is-a has-a 只是一种启发式)。然而,为所有那些可能的子类重写相同的包装方法似乎是不必要的,几乎是可笑的不雅,只是去获得那个功能。类似的事情model.getOrientation().set_x(1)
看起来也很愚蠢。
我可以明白为什么这对于小对象来说不会“太糟糕”,但是对于这个例子(以及其他类似的例子),如果你必须通过箍来假装你正在使用继承,那么组合的意义何在?我现在应该使用它吗?我几乎可以肯定我正在不正确地考虑这个问题。