本文實(shí)例講述了PHP設(shè)計(jì)模式之單例模式原理與實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:
一、什么是單例模式
作為對(duì)象的創(chuàng)建模式,單例模式確保某一個(gè)類只有一個(gè)實(shí)例,并且對(duì)外提供這個(gè)全局實(shí)例的訪問入口。它不會(huì)創(chuàng)建實(shí)例副本,而是會(huì)向單例類內(nèi)部存儲(chǔ)的實(shí)例返回一個(gè)引用。
二、PHP單例模式三要素
1. 需要一個(gè)保存類的唯一實(shí)例的靜態(tài)成員變量。
2. 構(gòu)造函數(shù)和克隆函數(shù)必須聲明為私有的,防止外部程序創(chuàng)建或復(fù)制實(shí)例副本。
3. 必須提供一個(gè)訪問這個(gè)實(shí)例的公共靜態(tài)方法,從而返回唯一實(shí)例的一個(gè)引用。
三、為什么使用單例模式
使用單例模式的好處很大,以數(shù)據(jù)庫操作為例。若不采用單例模式,當(dāng)程序中出現(xiàn)大量數(shù)據(jù)庫操作時(shí),每次都要執(zhí)行new操作,每次都會(huì)消耗大量的內(nèi)存資源和系統(tǒng)資源,而且每次打開和關(guān)閉數(shù)據(jù)庫連接都是對(duì)數(shù)據(jù)庫的一種極大考驗(yàn)和浪費(fèi)。使用了單例模式,只需要實(shí)例化一次,不需要每次都執(zhí)行new操作,極大降低了資源的耗費(fèi)。
四、單例模式示例
這里以數(shù)據(jù)庫操作為例
?php
/**
* 單例模式
**/
class Db
{
//保存全局實(shí)例
private static $instance;
//數(shù)據(jù)庫連接句柄
private $db;
//數(shù)據(jù)庫連接參數(shù)
const HOSTNAME = "127.0.0.1";
const USERNAME = "root";
const PASSWORD = "root";
const DBNAME = "testdb";
//私有化構(gòu)造函數(shù),防止外界實(shí)例化對(duì)象
private function __construct()
{
$this->db = mysqli_connect(self::HOSTNAME,self::USERNAME,
self::PASSWORD,self::DBNAME);
}
//私有化克隆函數(shù),防止外界克隆對(duì)象
private function __clone()
{
}
//單例訪問統(tǒng)一入口
public static function getInstance()
{
if(!(self::$instance instanceof self))
{
self::$instance = new self();
}
return self::$instance;
}
//數(shù)據(jù)庫查詢操作
public function getinfo()
{
$sql = "select * from testtb";
$res = mysqli_query($this->db,$sql);
while($row = mysqli_fetch_array($res)) {
echo $row['testcol'] . 'br />';
}
mysqli_free_result($res);
}
}
$mysqli = Db::getInstance();
$mysqli->getinfo();
?>
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:- php單態(tài)設(shè)計(jì)模式(單例模式)實(shí)例
- php設(shè)計(jì)模式 Singleton(單例模式)
- php設(shè)計(jì)模式之單例模式使用示例
- PHP設(shè)計(jì)模式之工廠模式與單例模式
- PHP中常用的三種設(shè)計(jì)模式詳解【單例模式、工廠模式、觀察者模式】
- PHP設(shè)計(jì)模式之觀察者模式入門與應(yīng)用案例詳解
- PHP設(shè)計(jì)模式之中介者模式(Mediator Pattern)入門與應(yīng)用案例詳解
- PHP設(shè)計(jì)模式之迭代器(Iterator)模式入門與應(yīng)用詳解
- PHP設(shè)計(jì)模式之解釋器(Interpreter)模式入門與應(yīng)用詳解
- PHP經(jīng)典面試題之設(shè)計(jì)模式(經(jīng)常遇到)
- php設(shè)計(jì)模式小結(jié)
- PHP設(shè)計(jì)模式之單例模式入門與應(yīng)用詳解