私はGoFの本を使ってシングルトンパターンについて学んでいます。私はそれを読むときに問題があります。
- クラス操作よりも柔軟性がある: シングルトンをパッケージ化する別の方法機能はクラス操作(つまり、C ++の静的メンバー関数やSmalltalkのクラスメソッド)を使用することです。しかし、これらの言語技法はいずれも、クラスの複数のインスタンスを許可するように設計を変更することを困難にします。さらに、C ++の静的メンバ関数は決して仮想ではないので、サブクラスはそれらを多態的にオーバーライドできません。
私はインスタンスの静的なリストを使用する場合、クラスの操作(静的メソッド)は、クラスの複数のインスタンスを許可することもできると思うが、私は間違っていると私は知っている。
だから、誰も私にこの問題を理解するのに役立ついくつかの例を教えてくれますか?本当にありがとう!
回答:
回答№1は0元のアイデアは、クラス内の静的メンバーだけを使用し、これらの静的メンバーのみで動作する静的メソッドを使用してから、 クラスそのもの シングルトンとして。 あなたが何かを行うのであれば、それは別のタイプ(インスタンスではなく、クラスではなく、クラスのインスタンスであり、メタクラスのインスタンスではありません)です。
したがって、そのようなインスタンスのリストを管理する場合、このタイプのインスタンスを複数作成することはありません。あなたはシングルトン(クラス)を作成しています その中に 非シングルトン型インスタンスのリスト
ある意味では、すべてのクラスはシングルトンです。テキスト内で言及されている理由から、プログラム内でシングルトンオブジェクトとして使用することは、通常はお勧めできません。