1

さまざまなタイプの多くのアイテムで構成されるシステムのモデルを構築するための一般的な解決策は、各モジュールが特定のタイプを担当するモジュラー システムを作成することです。たとえば、ウォンバットのモジュール WombatModule:IModule があり、IModule インターフェイスには GetCount() (ウォンバットの数を見つける) や Update() (すべてのウォンバットの状態を更新する) などのメソッドがあります。

よりオブジェクト指向のアプローチは、すべてのアイテム タイプのクラスを持ち、すべてのアイテムのインスタンスを作成することです。これにより、クラス Wombat:IItem が Update() のようなメソッドで作成されます (この 1 つの wombat を更新するため)。

コードの観点から見ると、違いはごくわずかですが、実行時間は大幅に異なります。モジュール指向のソリューションは確かに高速です。オブジェクトの作成が少なくなり、すべてのウォンバットに共通する操作の最適化が容易になります。

タイプとモジュールの数が増えると問題が発生します。各モジュールがいくつかのアイテムしかサポートしないため、パフォーマンス上の利点のほとんどが失われるか、モジュールの複雑さが大きくなり、1 つの一般的なタイプのわずかに異なるアイテム (太ったウォンバットとスリムなウォンバットなど) に対応するようになります。または両方。

WombatModule が非表示の Wombat オブジェクトのコレクションを保持し、それらのメソッドをループで実行するだけである場合、少なくとも一度は状態が悪化するのを見たことがあります。

パフォーマンスが長期的な開発ほど問題にならない場合、アイテムごとのオブジェクトの代わりにモジュールを使用するアーキテクチャ上の理由を特定できますか? 私が見逃している別の可能性があるかもしれませんか?

4

1 に答える 1

1

私は会社で働いておりembedded software company、私たちの会社code baseはかなり大きいです。コード ベースは、特定の機能を実行し、一部のオブジェクトを維持するモジュールを使用して設計されています。一部のオブジェクトは、独立したオブジェクトとして存在することもあります。私たちのアプローチで見られる最大の問題は、モジュールの境界を区別することです。私たちのモジュールは時間の経過とともに不必要に複雑になる傾向があり、当初はその境界の外にあった機能を実行するようにゆっくりと成長してきました。最善の方向性は、モジュール化して設計し、非常に特殊なオブジェクトを実装し、モジュールが意図した以上に大きくならないように専念することです。

于 2008-09-11T15:35:40.407 に答える