php實(shí)現(xiàn)設(shè)計(jì)模式中的單例模式詳解
【概要】
保證一個(gè)類僅有一個(gè)實(shí)例,并且提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)【GOF95】
【特點(diǎn)】
1、一個(gè)類只有一個(gè)實(shí)例
2、它必須自行創(chuàng)建這個(gè)實(shí)例
3、必須自行向整個(gè)系統(tǒng)提供這個(gè)實(shí)例
【結(jié)構(gòu)圖】

【主要角色】
Singleton定義一個(gè)Instance操作,允許客戶訪問(wèn)它的唯一實(shí)例。Instance是一個(gè)類方法。負(fù)責(zé)創(chuàng)建它的唯一的實(shí)例。
【優(yōu)缺點(diǎn)】
1、對(duì)唯一實(shí)例的受控訪問(wèn)
2、縮小命名空間 單例模式是對(duì)全局變量的一種改進(jìn)。它避免了那些存儲(chǔ)唯一實(shí)例的全局變量污染命名空間
3、允許對(duì)操作和表示的精華 單例類可以有子類。而且用這個(gè)擴(kuò)展類的實(shí)例來(lái)配置一個(gè)應(yīng)用是很容易的。你可以用你所需要的類的實(shí)例在運(yùn)行時(shí)刻配置應(yīng)用。
4、允許可變數(shù)目的實(shí)例(多例模式)
5、比類操作更靈活
【適用性】
1、當(dāng)類只能有一個(gè)實(shí)例而且客戶可以從一個(gè)眾所周知的訪問(wèn)點(diǎn)訪問(wèn)它時(shí)
2、當(dāng)這個(gè)唯一實(shí)例應(yīng)該是通過(guò)子類化可擴(kuò)展的。并且用戶應(yīng)該無(wú)需更改代碼就能使用一個(gè)擴(kuò)展的實(shí)例時(shí)。
【單例模式php實(shí)例】
<?php
/**
* 單例模式
* -------------
* @author zhaoxuejie <zxj198468@gmail.com>
* @package design pattern
* @version v1.0 2011-12-14
*/
class Singleton {
//私有靜態(tài)成員變量,保存全局實(shí)例
private static $instance = NULL;
//私有構(gòu)造方法,保證外界無(wú)法直接實(shí)例化
private function __construct(){}
//靜態(tài)方法,返回此類唯一實(shí)例
public static function getInstance(){
if(!isset(self::$instance)){
$c = __CLASS__;
self::$instance = new $c;
}
return self::$instance;
}
//測(cè)試用方法
public function info(){
return 'ok';
}
//防止克隆
public function __clone(){
trigger_error('Clone is not allowed.', E_USER_ERROR);
}
}
$s = Singleton::getInstance();
echo $s->info();
?>
- php單態(tài)設(shè)計(jì)模式(單例模式)實(shí)例
- PHP最常用的2種設(shè)計(jì)模式工廠模式和單例模式介紹
- php設(shè)計(jì)模式 Singleton(單例模式)
- php設(shè)計(jì)模式之單例模式使用示例
- php 設(shè)計(jì)模式之 單例模式
- PHP設(shè)計(jì)模式之工廠模式與單例模式
- 基于php設(shè)計(jì)模式中單例模式的應(yīng)用分析
- php設(shè)計(jì)模式之單例模式代碼
- php設(shè)計(jì)模式之單例模式實(shí)例分析
- 學(xué)習(xí)php設(shè)計(jì)模式 php實(shí)現(xiàn)單例模式(singleton)
- PHP設(shè)計(jì)模式之單例模式原理與實(shí)現(xiàn)方法分析
相關(guān)文章
php數(shù)值轉(zhuǎn)換時(shí)間及時(shí)間轉(zhuǎn)換數(shù)值用法示例
這篇文章主要介紹了php數(shù)值轉(zhuǎn)換時(shí)間及時(shí)間轉(zhuǎn)換數(shù)值用法,涉及php strtotime及date等函數(shù)實(shí)現(xiàn)日期的字符串格式與Unix時(shí)間戳格式轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下2017-05-05
PHP中單引號(hào)與雙引號(hào)的區(qū)別分析
在PHP中,我們可以使用單引號(hào)或者雙引號(hào)來(lái)表示字符串。不過(guò)我們作為開(kāi)發(fā)者,應(yīng)該了解其中的區(qū)別。單引號(hào)與雙引號(hào)對(duì)于定義字符一個(gè)是可以解析變量一個(gè)是會(huì)把變量直接輸出來(lái),同時(shí)單引號(hào)與雙引號(hào)在字符處理上單引號(hào)要優(yōu)與雙引號(hào)2014-08-08
php使用redis的幾種常見(jiàn)操作方式和用法示例
這篇文章主要介紹了php使用redis的幾種常見(jiàn)操作方式和用法,結(jié)合實(shí)例形式總結(jié)分析了PHP使用redis實(shí)現(xiàn)字符串緩存、隊(duì)列模擬、樂(lè)觀鎖與悲觀鎖實(shí)現(xiàn)、發(fā)布和訂閱等相關(guān)操作技巧,需要的朋友可以參考下2020-02-02
PHP封裝的微信公眾平臺(tái)接口開(kāi)發(fā)操作類完整示例
這篇文章主要介紹了PHP封裝的微信公眾平臺(tái)接口開(kāi)發(fā)操作類,結(jié)合完整實(shí)例形式分析了php微信開(kāi)發(fā)所涉及的配置、驗(yàn)證、接收、響應(yīng)、文本、語(yǔ)音、圖片等相關(guān)操作技巧,需要的朋友可以參考下2018-06-06
PHP執(zhí)行zip與rar解壓縮方法實(shí)現(xiàn)代碼
PHP執(zhí)行zip與rar解壓縮方法 先放著,以后研究,有地方要用到。2010-12-12
[企業(yè)公眾號(hào)]升級(jí)到[企業(yè)微信]之后發(fā)送消息失敗的解決方法
這篇文章主要介紹了[企業(yè)公眾號(hào)]升級(jí)到[企業(yè)微信]之后發(fā)送消息失敗的解決方法,涉及微信接口的修改相關(guān)操作,需要的朋友可以參考下2017-06-06

