1

ユーザーが定義済みの数を超えるオブジェクトを作成できないように、ライブラリにオブジェクト プール デザイン パターンを使用したいと考えています。
リソースのコンストラクターではなく、インスタンスを取得するためにユーザーに Pool クラスを使用させるにはどうすればよいですか?

プールクラスもインスタンスを作成できないため、リソースコンストラクターをプライベートと宣言することはできません...

ありがとう

4

2 に答える 2

0

コンポジションとコレクションを保持するクラスを使用します。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);
        }
    }
};
于 2011-10-18T07:26:07.570 に答える
0

プールはクラス自体から分離する必要はありません。または、クラスをプール内で合成することもできます。

インスタンスは、シングルトンのようにオブジェクトの (自己完結型の) プールから取得されますが、必要なだけのイートンです。

可視性を備えたゲームをプレイすることもできますが、その方法は言語と IMO によって異なります。おそらく努力する価値はありません。シングルトンのようなパターンを使用しますが、1 つではなくn 個のオブジェクトを使用します。

于 2011-10-18T07:28:53.397 に答える