我有一个C类描述了3D空间中对象的方向 – 位置,旋转,缩放等.我有其他类必须需要这样的信息(或其一部分) – 模型,地形,摄像头等.现在我可以让我的方向课的子类,但是谷歌已经告诉我喜欢组合继承.这在哲学上是有意义的 – 一个模型不是一个方向,它有一个(并且是的,我知道是一个事情只是一个启发式).然而,似乎不必要的是,对于所有那些未来的子类来说,重写相同的包装方法几乎是不合适的.像model.getOrientation().set_x(1)这样的东西似乎也很傻.
我可以看到为什么对于小对象来说这不是“太糟糕”,但是对于这个例子(和其他人)来说,如果你必须穿过箍来假装你使用继承,那么这个组合是什么意思?我现在应该甚至使用吗?我几乎肯定我在想这个不正当.
解决方法
它可能看起来很傻,但是你的model.getOrientation().set_x(1)可能是要走的路.
如果你厌倦了键入getOrientation()部分,你可以尝试这样的:
Orientation & orient = model.getOrientation(); orient.set_x(1); orient.set_y(1); if( orient.check_something() ) { //whatever } //etc.