php設計模式筆記:使用php實現單例模式
【意圖】
保證乙個類僅有乙個例項,並且提供乙個訪問它的全域性訪問點【gof95】
單例模式有三個特點:
1、乙個類只有乙個例項
2、它必須自行建立這個例項
3、必須自行向整個系統提供這個例項
【單例模式結構圖】
單例模式
【單例模式中主要角色】
singleton 定義乙個instance操作,允許客戶訪問它的唯一例項。instance是乙個類方法。負責建立它的唯一的例項。
【單例模式的優點】
1、對唯一例項的受控訪問
2、縮小命名空間 單例模式是對全域性變數的一種改進。它避免了那些儲存唯一例項的全域性變數汙染命名空間
3、允許對操作和表示的精華 單例類可以有子類。而且用這個擴充套件類的例項來配置乙個應用是很容易的。你可以用你所需要的類的例項在執行時刻配置應用。
4、允許可變數目的例項(多例模式)
5、比類操作更靈活
【單例模式適用場景】
1、當類只能有乙個例項而且客戶可以從乙個眾所周知的訪問點訪問它時
2、當這個唯一例項應該是通過子類化可擴充套件的。並且使用者應該無需更改**就能使用乙個擴充套件的例項時。
【單例模式與其它模式】
工廠模式:單例模式使用工廠模式來提供自己的例項。
抽象工廠模式:抽象工廠模式可以使用單例模式,將具體工廠類設計成單例類。
建造模式:建造模式可以將具體建造類設計成單例模式。
……【單例模式php示例】
1234567
891011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
3233
3435
3637
3839
4041
4243
4445
4647
4849
5051
5253
5455
5657
5859
6061
6263
6465
6667
<?php/** * 單例模式 2010-06-06 sz
* @author phppan.p#gmail.com
* 哥學社成員(
* @package design pattern
*//**
* 懶漢式單例類
*/class singleton
/** * 靜態工廠方法,返還此類的唯一例項
*/public static function getinstance(
)return
self
::$_instance;}
/** * 防止使用者轉殖例項
*/public
function __clone(
)/**
* 測試用方法
*/public
function test()}
/** * 客戶端
*/class client }
client::
main()
;?>
php中不支援餓漢式的單例模式
因為php不支援在類定義時給類的成員變數賦予非基本型別的值。如表示式,new操作等等
php 設計模式 學習筆記
php 有如下幾種設計模式 初聽到設計模式可能讓你覺得很抽象,其實設計模式就是對常見程式設計問題的靈活解決方案。1 工廠模式 factory 他之所以被成為工廠模式是因為他負責 生產 物件,看看下面的例子 class factoryelse 你如何呼叫呢 factorymql factory fac...
PHP設計模式學習筆記
當多個地方需要例項化乙個類的時候,為了滿足之後可能需要做修改的可能的時候可以使用工廠模式。即在乙個類中的乙個方法例項化 之後需要修改只要修改該函式即可。資料庫鏈結,單例模式,將建構函式宣告為私有 遮蔽在其他地方例項化資料庫連線,宣告乙個方法建立例項 new self 即定義乙個受保護的屬性陣列,當呼...
大話PHP設計模式筆記
針對php的設計模式進行總結記錄。一 關於命名空間 命名空間 1.命名空間介紹 2.命名空間使用 例項 test1.php檔案 namespace test1 function test test2.php檔案 namespace test2 function test test.php檔案 如果沒...