シングルトン パターンと、あまり一般的ではないマルチトン パターンは、アプリケーション内のクラスの数を制御します。パターン名と同様、シングルトンは 1 回のみインスタンス化でき、オブジェクトは 1 つだけですが、マルチインスタンス パターンは複数回インスタンス化できます。
シングルトンの特性に基づいて、アプリケーションを構成し、アプリケーション内でいつでもアクセスできる変数を定義するためにシングルトンを使用することがよくあります。ただし、シングルトンはグローバル状態を生成し、単一のルート オブジェクトはシステム関数をカプセル化しないため、シングルトンの使用が推奨されない場合があります。多くの場合、これにより単体テストとデバッグが困難になります。読者は状況に応じて独自の判断を下します。
コード例:
コードをコピー コードは次のとおりです:
class SingletonExample{
private function __construct(){}//直接インスタンス化を防止します
public static function getInstance( ){ //どのオブジェクトとも関係ありません
static $instance=null; //この関数を呼び出すすべてのコードがこの変数を共有するため、クラスの静的変数にする必要はありません
if($instance==null) {
$instance= new SingletonExample();
}
return $instance;
}
}
$obj1=SingletonExample::getInstance();
$obj2=SingletonExample::getInstance();
var_dump($obj1== =$obj2); // true は同じインスタンスです
?>
マルチトンはシングルトンと似ていますが、後者はキー値を渡すために getInstance() 関数を必要とする点が異なります。 特定のキー値に対して一意のオブジェクト インスタンスのみが存在し、各ノードが一意の識別子を持ち、各ノードが 1 回の実行で複数回出現する可能性があります (cms のノードなど)。これらのノードを実装するには、Multiton モードを使用します。Multiton はメモリを節約し、同じオブジェクトの複数のインスタンスが競合しないようにします。
コードをコピーします。 コードは次のとおりです。 php
class MultitonExample{ private function __construct(){}//直接インスタンス化を防ぐ
public static function getInstance($key){ static $instance=array() if(!array_key_exists($key,$instance); ){ $instance[$key]=new SingletonExample();
}
return $instance($key);
}
};
?>
http://www.bkjia.com/PHPjc/327983.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/327983.html
技術記事
シングルトン パターンと、あまり一般的ではないマルチトン パターンは、アプリケーション内のクラスの数を制御します。パターン名など、シングルトンは 1 回のみインスタンス化でき、オブジェクトは 1 つだけあり、複数のインスタンス パターンを作成できます...