オブジェクトプールを使用した建設を防ぐにはどうすればよいですか
-
25-10-2019 - |
質問
ライブラリにオブジェクトプール設計パターンを使用して、ユーザーが事前定義された数のオブジェクトを作成できないようにしたいと考えています。
リソースのコンストラクターではなく、インスタンスを取得するためにプールクラスを使用するようにユーザーに強制するにはどうすればよいですか?
プールクラスもインスタンスを作成できないため、リソースコンストラクターをプライベートで宣言することはできません...
ありがとう
解決
コレクションを保持する構成とクラスを使用します。 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);
}
}
};
他のヒント
プールはありません 必要 クラス自体から分離するか、クラスがプールなどで複合することができます。
インスタンスは、シングルトンのように、オブジェクトの(自己完結型の)プールから取得されますが、これまでにないものがあります。
視界でゲームをプレイすることもできますが、その方法は言語とIMOに依存します。おそらく努力する価値はありません。シングルトンのようなパターンを使用しますが、 n オブジェクト、1つではなく。
所属していません StackOverflow