2011-10-18 6 views
1

ライブラリにオブジェクトプールデザインパターンを使用して、あらかじめ定義された数以上のオブジェクトを作成することはできません。
リソースのコンストラクタではなく、インスタンスを取得するためにPoolクラスを使用するにはどうすればよいですか?オブジェクトプールでの構築を防止するには

、プールのクラスは、どちらかのインスタンスを作成することができませんので、私は...

おかげ

+0

どのプログラミング言語を使用していますか? –

+0

私はC++/CLIを使用しています。私はfriendキーワードをC++でこれを行うために使うことができると知っていますが、私はそれを使いたくありません。 – randomVariable

+0

なぜ 'friend'キーワードを使いたくないのですか?この種の問題を正確に解決するように設計されています。 –

答えて

0

使用組成物およびコレクションを保持するクラスをリソースコンストラクタプライベートを宣言することはできません。 IOW、コレクションの周りに可視性を調整し、オブジェクトの作成を処理するラッパー型を与えます。

あなたが本当にさらにリソースの作成を制限したい場合は、あなたがこのアプローチを使用して友情ずにバインドすることができます(C++ /友人のコメントを見た):

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); 
     } 
    } 
}; 
0

プールががするを必要としません。クラス自体とは別のクラス、またはプールなどでクラスを複合することもできます。

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

あなたはまた、視界でゲームをすることもできますが、その方法は言語やIMOに依存します。単音のようなパターンを使用しますが、nオブジェクトではなく1つです。

関連する問題