私は現在、私がしばらく経験してきた繰り返しの問題に対する「決定的な」解決策(つまり、OOPの教訓に準拠した効率的な解決策を見つけること)を見つけようとしています:私のさまざまな部分での共有データの問題コード。
ここでは MVC フレームワークを使用していないことに注意してください。データ クラスをモデルとして、表示クラスをビューとして参照しているだけです (適切な名前であり、MVC パターンとは何の関係もないため、人々は MVC パターンが「作成」される前にビューとモデルを作成しました。 )。
ここに私の問題があります。かなり拡張されたデータ (ゲームなど) を使用するアプリケーションを作成するときはいつでも、ロジック (動き、衝突など) を分離し、2 つのクラスに表示しようとします。しかし、その後、私は問題に出くわしました:異なるクラス間でデータ、参照、またはその他のものを複製することなく、ロジッククラスに格納されたデータをビュークラスの対応する表示オブジェクトに「バインド」する方法は?
基本的な例を見てみましょう:
「EntityData」オブジェクトのベクターを保持するMyLogicClassがあります(それぞれに位置、サイズ、さまざまな状態、アイテムのロジックを処理するためのすべてがあります)
そして、MyLogicClass にある各 EntityData のスプライトを作成して表示し、ゲーム ループで更新された後にスプライトを移動させる MyViewClass があります。
最初に頭に浮かぶのは、各データ要素内に対応するビューを格納することです。これにより、Vector をループして項目ロジックを更新し、それに応じてビューを更新できます。しかし、これにより、MyViewClass 内に MyLogicClass 参照を保持する必要があり、エンティティ データをターゲットにできることを確認して、2 つのクラスを結合する必要があります (これはやりたくないことです)。
一方、データ モデル (ID パラメータを持つ MyLogicClass の EntityData オブジェクト) とビュー クラス (元のエンティティ データ ID への参照を保持するスプライト) の両方で、ID を持つ各エンティティのソリューションがあります。しかし、データ モデルで強制的にループする特定のエンティティをターゲットにしたい場合は、ビューで関連するスプライトを見つけるためにもう一度ループします。このソリューションにより、データとビューを疎結合することができますが、何百もの要素をフレームごとに 2 回ループする (発生する可能性があります!) のは、パフォーマンスが最適化されていないように思えます。
私はこの問題全体を、それに値するよりもはるかに重要視しているかもしれませんが、私はそのことに何度も遭遇しており、それについて私以外の見解を持ちたいと思っています.
このような問題に対するアドバイス/解決策はありますか?
そのような場合に私が認識していない可能性のある他のデータ形式/階層はありますか?