ゲーム オブジェクトの機能から物理シミュレーションを分離するゲーム エンジンがあります。だから私は物理的な体のための純粋な仮想クラスを持っています
class Body
そこから、物理シミュレーションのさまざまな実装を導き出します。私のゲームオブジェクトクラスは次のようになります
class GameObject {
public:
// ...
private:
Body *m_pBody;
};
その特定のゲームに必要な実装をプラグインできます。しかし、私がBody
持っているのはGameObject
. だから私は自分が次のようなものをたくさん書いていることに気づきました
Vector GameObject::GetPosition() const { return m_pBody->GetPosition(); }
私はそれらすべてをスクラッチして、次のようなことをしたくなります
pObject->GetBody()->GetPosition();
しかし、これは間違っているようです (つまり、デメテルの法則に違反しています)。さらに、実装から使用法に冗長性をプッシュするだけです。だから私はこれを行う別の方法を探しています。