php單態(tài)設(shè)計(jì)模式(單例模式)實(shí)例
單態(tài)設(shè)計(jì)模式也叫單例模式:
1.單態(tài)設(shè)計(jì)模式含義:
單態(tài)模式的主要作用是保證在面向?qū)ο缶幊淘O(shè)計(jì)中,一個(gè)類只能有一個(gè)實(shí)例對(duì)象存在。作為對(duì)象的創(chuàng)建模式,單例模式確保某一個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)全局地提供這個(gè)實(shí)例。它不會(huì)創(chuàng)建實(shí)例副本,而是會(huì)向單例類內(nèi)部存儲(chǔ)的實(shí)例返回一個(gè)引用。
2.單臺(tái)模式的三個(gè)關(guān)鍵點(diǎn):
① 需要一個(gè)保存類的唯一實(shí)例的靜態(tài)成員變量;
②構(gòu)造函數(shù)和克隆函數(shù)必須聲明為私有的,防止外部程序new類從而失去單例模式的意義;
③必須提供一個(gè)訪問這個(gè)實(shí)例的公共的靜態(tài)方法(通常為getInstance方法),從而返回唯一實(shí)例的一個(gè)引用 。
<?php
class DB {
private static $obj = null; //聲明一個(gè)私有的,靜態(tài)的成員屬性$obj
private function__construct() { //私有構(gòu)造方法,只能在類的內(nèi)部實(shí)例化對(duì)象
echo "連接數(shù)據(jù)庫成功<br>";
}
public static function getInstance() { // 通過此靜態(tài)方法才能獲取本類的對(duì)象
if(is_null(self::$obj)) //如果本類中的$obj為空,說明還沒有被實(shí)例化過
self::$obj = new self(); //實(shí)例化本類對(duì)象
return self::$obj; //返回本類的對(duì)象
}
public function query($sql) { //執(zhí)行SQL語句完成對(duì)數(shù)據(jù)庫的操作
echo $sql;
}
}
$db = DB::getInstance(); //只能使用靜態(tài)方法getInstance()去獲取DB類的對(duì)象
$db -> query("select *from user"); //訪問對(duì)象中的成員
?>
相關(guān)文章
php preg_match_all結(jié)合str_replace替換內(nèi)容中所有img
最近做站的時(shí)候,采集了大量的數(shù)據(jù),但采回來的數(shù)據(jù)基本上都要經(jīng)過過濾原站保留的數(shù)據(jù),其中IMG就是一個(gè)地方。網(wǎng)站上好多這些應(yīng)用例子似乎沒有必要“秀”出來,但站已幾天沒寫日志,那就來一個(gè)吧2008-10-10PHP實(shí)現(xiàn)在數(shù)據(jù)庫百萬條數(shù)據(jù)中隨機(jī)獲取20條記錄的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)在數(shù)據(jù)庫百萬條數(shù)據(jù)中隨機(jī)獲取20條記錄的方法,涉及php簡單數(shù)據(jù)庫查詢與隨機(jī)數(shù)操作相關(guān)技巧,需要的朋友可以參考下2017-04-04PHP5.5基于mysqli連接MySQL數(shù)據(jù)庫和讀取數(shù)據(jù)操作實(shí)例詳解
這篇文章主要介紹了PHP5.5基于mysqli連接MySQL數(shù)據(jù)庫和讀取數(shù)據(jù)操作,結(jié)合實(shí)例形式詳細(xì)分析了php5.5使用mysqli連接、讀取mysql數(shù)據(jù)庫,以及PDO預(yù)處理相關(guān)操作技巧,需要的朋友可以參考下2019-02-02PHP中file_put_contents追加和換行的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄狿HP中file_put_contents追加和換行的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04PHP mkdir創(chuàng)建文件夾實(shí)現(xiàn)方法解析
這篇文章主要介紹了PHP mkdir創(chuàng)建文件夾實(shí)現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11php7 list()、session及其他模塊的修改實(shí)例分析
這篇文章主要介紹了php7 list()、session及其他模塊的修改,結(jié)合實(shí)例形式分析了php7 list()、session及其他模塊的修改相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下2020-05-05