一般的に言えば、クラスとオブジェクト (クラスのインスタンス) の間には 1 対多の関係があります。ただし、場合によっては、クラスのインスタンスが 1 つだけ必要な場合もあります。たとえば、複数のインスタンスの多様性は、制御不能な要因をもたらします。また、複数のインスタンス化はリソースの無駄になり、効率が低下します。別の例として、それらが の他のオブジェクトを作成するために使用される場合があります。現時点では、これに対処するより良い方法は、クラス
のインスタンスを単一にすることです。つまり、このクラスが動作中に生成するインスタンスが最大 1 つであることを確認するか (シングルトン モード)、すべてのインスタンスの一貫性を確保します (モノステート モード)。
PHP で実装されたシングルトン モードの例:
<?php classSingleton { privatestatic$instance; privatefunction__construct() { } publicstaticfunctioninstance() { if(self::$instance==null) { self::$instance=newSingleton(); } returnself::$instance; } } ?>
$instance=Singleton::instance(); // 这样是错误的: $instance = new Singleton();
PHP で実装されたシングルトン モードの特性の詳細な分析:
1 静的なプライベート属性。 : used インスタンスを保存します。Static はクラスがインスタンス化されないことを保証し、Private はクラスのインスタンスによって変更されないことを保証します。
2. プライベート コンストラクター: このクラスをこのクラスの外でインスタンス化することはできません。
3. 静的パブリック メソッド: インスタンスを作成し、その一意性を確保します。 static を使用すると、メソッドをインスタンス化せずに呼び出すことができます。
2. クラスを指定して、そのシングルトンのサブクラスを作成できます。
2. 使用法は不透明であり、ユーザーはシングルトン クラスを使用し、
new を通じてインスタンス化できないことを知っておく必要があります。
モノステート パターンの基本原則は、モノステート クラスのすべてのインスタンスが同じインスタンスを使用するようにすることです。実際、クラスのすべての属性は静的に宣言できます:
<?php classmonostate { privatestatic$itsX=0; publicfunction__construct() { } publicfunctionsetX($x) { self::$itsX=$x; } publicfunctiongetX() { returnself::$itsX; } } ?>
上記は、PHP でのシングルトン モードとモノステート モードの実装の内容です。さらに関連する内容については、PHP の中国語 Web サイト (www.php.cn) に注目してください。 )!