PHP_PHP チュートリアルでの単一ケースおよび複数ケースの設計パターンのアプリケーション分析

WBOY
リリース: 2016-07-21 15:01:38
オリジナル
703 人が閲覧しました

シングルトン パターンと、あまり一般的ではないマルチトン パターンは、アプリケーション内のクラスの数を制御します。パターン名と同様、シングルトンは 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

tru​​e
http://www.bkjia.com/PHPjc/327983.html

技術記事

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!