ユーザーが定義済みの数を超えるオブジェクトを作成できないように、ライブラリにオブジェクト プール デザイン パターンを使用したいと考えています。
リソースのコンストラクターではなく、インスタンスを取得するためにユーザーに Pool クラスを使用させるにはどうすればよいですか?
プールクラスもインスタンスを作成できないため、リソースコンストラクターをプライベートと宣言することはできません...
ありがとう
ユーザーが定義済みの数を超えるオブジェクトを作成できないように、ライブラリにオブジェクト プール デザイン パターンを使用したいと考えています。
リソースのコンストラクターではなく、インスタンスを取得するためにユーザーに Pool クラスを使用させるにはどうすればよいですか?
プールクラスもインスタンスを作成できないため、リソースコンストラクターをプライベートと宣言することはできません...
ありがとう
コンポジションとコレクションを保持するクラスを使用します。IOW、可視性を調整し、オブジェクトの作成を処理するコレクションのラッパー タイプを指定します。
リソースの作成をさらに制限したい場合は、このアプローチを使用してフレンドシップなしでバインドできます (c++/friend のコメントを参照)。
class t_resource {
private:
t_resource();
public:
~t_resource();
static void AddToResourcePool(t_resource_pool& resourcePool) {
if (resourcePool.isFull()) {
/* error */
}
else {
resourcePool.addResource(new t_resource);
}
}
};
プールはクラス自体から分離する必要はありません。または、クラスをプール内で合成することもできます。
インスタンスは、シングルトンのようにオブジェクトの (自己完結型の) プールから取得されますが、必要なだけのイートンです。
可視性を備えたゲームをプレイすることもできますが、その方法は言語と IMO によって異なります。おそらく努力する価値はありません。シングルトンのようなパターンを使用しますが、1 つではなくn 個のオブジェクトを使用します。