《PHP應用:學習php設計模式 php實現單例模式(singleton)》要點:
本文介紹了PHP應用:學習php設計模式 php實現單例模式(singleton),希望對您有用。如果有疑問,可以聯系我們。
PHP編程保證一個類僅有一個實例,并且提供一個拜訪它的全局拜訪點.
單例模式有三個特點:
1、一個類只有一個實例
2、它必須自行創建這個實例
3、必須自行向整個系統提供這個實例
一、單例模式結構圖
PHP編程
PHP編程二、單例模式中主要角色
Singleton 定義一個Instance操作,允許客戶拜訪它的唯一實例.Instance是一個類方法.負責創建它的唯一的實例.
三、單例模式的優點
1、對唯一實例的受控拜訪
2、縮小命名空間 單例模式是對全局變量的一種改進.它避免了那些存儲唯一實例的全局變量污染命名空間
3、允許對操作和表示的精華 單例類可以有子類.而且用這個擴展類的實例來配置一個應用是很容易的.你可以用你所需要的類的實例在運行時刻配置應用.
4、允許可變數目的實例(多例模式)
5、比類操作更靈活
四、單例模式適用場景
1、當類只能有一個實例而且客戶可以從一個眾所周知的拜訪點拜訪它時
2、當這個唯一實例應該是通過子類化可擴展的.并且用戶應該無需更改代碼就能使用一個擴展的實例時.
五、單例模式與其它模式】
工廠方法模式(factory method模式):單例模式使用工廠模式來提供自己的實例.
抽象工廠模式(abstract factory模式):抽象工廠模式可以使用單例模式,將具體工廠類設計成單例類.
建造者模式(Builder模式):建造模式可以將具體建造類設計成單例模式.
五、單例模式PHP示例
PHP編程
<?php
/**
* 懶漢式單例類
*/
class Singleton {
/**
* 靜態成品變量 保存全局實例
*/
private static $_instance = NULL;
/**
* 私有化默認構造辦法,保證外界無法直接實例化
*/
private function __construct() {
}
/**
* 靜態工廠辦法,返還此類的唯一實例
*/
public static function getInstance() {
if (is_null(self::$_instance)) {
self::$_instance = new Singleton();
}
return self::$_instance;
}
/**
* 防止用戶克隆實例
*/
public function __clone(){
die('Clone is not allowed.' . E_USER_ERROR);
}
/**
* 測試用辦法
*/
public function test() {
echo 'Singleton Test!';
}
}
/**
* 客戶端
*/
class Client {
/**
* Main program.
*/
public static function main() {
$instance = Singleton::getInstance();
$instance->test();
}
}
Client::main();
?>
PHP編程以上就是使用php實現單例模式的代碼,還有一些關于單例模式的概念區分,希望對大家的學習有所幫助.
歡迎參與《PHP應用:學習php設計模式 php實現單例模式(singleton)》討論,分享您的想法,維易PHP學院為您提供專業教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/8303.html