2

GoFさんの本を使ってSingletonパターンについて学んでいます。その結果を読むときに問題があります。

  • クラス操作よりも柔軟:シングルトンの機能をパッケージ化するもう 1 つの方法は、クラス操作 (つまり、C++ の静的メンバー関数または Smalltalk のクラス メソッド) を使用することです。しかし、これらの言語手法はどちらも、クラスの複数のインスタンスを許可するように設計を変更することを困難にします。さらに、C++ の静的メンバー関数は決して仮想ではないため、サブクラスはそれらをポリモーフィックにオーバーライドできません。

この説明は本当にわかりません。インスタンスの静的リストを使用すると、クラス操作(静的メソッド)でもクラスの複数のインスタンスを許可できると思いますが、もちろん間違っていることはわかっています。

では、この問題を理解するのに役立つ例を誰か教えてください。本当にありがとう!

4

1 に答える 1

0

元のアイデアは、クラス内の静的メンバーのみを使用し、これらの静的メンバーでのみ動作する静的メソッドを作成し、クラス自体をシングルトンとして使用することです。実行時のインスタンス化は不要であり、許可されていません。また、何かをインスタンス化する場合、それは別のタイプです (クラスではなくインスタンスです。smalltalk では、クラスのインスタンスであり、メタクラスのインスタンスではありません)。

したがって、そのようなインスタンスのリストを管理する場合、このタイプの複数のインスタンスを作成したことにはなりません。非シングルトンタイプのインスタンスのリストを含むシングルトン (クラス) を作成しました

ある意味で、すべてのクラスはシングルトンです。テキストに記載されている理由により、プログラムでシングルトンオブジェクトとして使用することは通常は良い考えではありません。

于 2012-06-27T16:44:17.867 に答える