Abstract_things へのポインターのリストを持つ My_list クラスがあります。メモリの使用を最適化するために、すべての派生モノは、「新規および削除」ステレオタイプで確立された 1 つのメモリ プールを使用します。アプリケーションの初期化中にプールのサイズを適切に設定するために、ビルダーはどの Thing が最大であるかを判断し、それに基づいてプールのサイズを決定します。
設計上のジレンマは、新しいモノがモデルに追加された場合 (赤い Thing_4 で表される)、設計者はロジックを調整するために Builder に移動する必要があることです。私たちのチームがこれを行うことを覚えておくのは非常に困難であることに気付きました (約半分のモノが Builder で考慮されていませんでした)。将来の世代がこれを見落としてしまうことを非常に懸念しています。
私の質問は、どうすればこれを改善できますか? Thing_4 クラスを作成する過程で、max_size のすべてが自動的に処理されるとしたら素晴らしいことです。方法が思い浮かびませんが。
注: 写真を確認すると、間違いがあることに気付きました。コード ボックスの最後の行は、Abstract_thing::set_max_pool_size(max_size, max_number) となるはずです。
編集:画像を表示する方法がわかりません。プレビュー ウィンドウではすべて問題ないように見えますが、公開すると表示されません。何か助けはありますか?
編集:もう少し背景を説明すると、これは安全性が重要なシステムの組み込みアプリケーションの設計の一部です。アプリケーションの初期化中にヒープからメモリを割り当てることができますが、その初期化フェーズを終了した後は、動的メモリを割り当てることはできません。これを試みると、アプリケーションがクラッシュします。したがって、使用するインスタンスの最大サイズと最大数に合わせてプログラムします。すべての派生オブジェクトに十分なスペースを含む 1 つのプールを用意する方が、派生オブジェクトごとにプールを用意するよりも優れた方法です。
代替テキスト http://img262.imageshack.us/img262/4470/designproblemof1.png