最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP中單例模式的使用場景與使用方法講解

 更新時間:2019年03月18日 11:13:47   作者:CODETC  
今天小編就為大家分享一篇關(guān)于PHP中單例模式的使用場景與使用方法講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

單例模式按字面來看就是指某一個類只存在一個實例,這一點其實是與靜態(tài)方法是相同的,只存在一個實例的好處是當(dāng)我們需要使用某個類時只需要實例化一次,不需要每次都去new,極大的降低了資源的耗費,比如說數(shù)據(jù)庫的連接類。

一個類只有一個對象實例含義  

作為對象的創(chuàng)建模式,單例模式確保某一個類只有一個實例,而且自行實例化并向整個系統(tǒng)全局地提供這個實例。它不會創(chuàng)建實例副本,而是會向單例類內(nèi)部存儲的實例返回一個引用。

那么單例模式與靜態(tài)方法有什么區(qū)別呢?

個人觀點,如果不存在比較復(fù)雜的事務(wù)管理,用singleton會比較好,原因有三:

  • 1、單例可以繼承類,實現(xiàn)接口,而靜態(tài)類不能(可以集成類,但不能集成實例成員);
  • 2、單例可以被延遲初始化,靜態(tài)類一般在第一次加載是初始化;
  • 3、單例模式在使用中比靜態(tài)方法更靈活;

雖然這樣說,但到底該選用單例還是靜態(tài),我們還需要視實際情況而定,在設(shè)計模式中我們應(yīng)該做到的是:減少代碼,增加穩(wěn)定,方便理解,提升性能,減少開銷。

扯遠(yuǎn)了,下面我們說回PHP中單例模式的使用。

單例類至少擁有以下三種公共元素:

  • 1、必須擁有一個構(gòu)造函數(shù),并且必須被標(biāo)記為private。
  • 2、擁有一個保存類的實例的靜態(tài)成員變量。
  • 3、擁有一個訪問這個實例的公共的靜態(tài)方法。

單例模式確保某個類只有一個實例,而且自行實例化并向整個系統(tǒng)提供這個實例。

單例模式是一種常見的設(shè)計模式,在計算機(jī)系統(tǒng)中,線程池、緩存、日志對象、對話框、打印機(jī)、數(shù)據(jù)庫操作、顯卡的驅(qū)動程序常被設(shè)計成單例。

單例模式分3種:懶漢式單例、餓漢式單例、登記式單例。

單例模式有以下3個特點:

1.只能有一個實例。

2.必須自行創(chuàng)建這個實例。

3.必須給其他對象提供這一實例。

那么為什么要使用PHP單例模式?

PHP一個主要應(yīng)用場合就是應(yīng)用程序與數(shù)據(jù)庫打交道的場景,在一個應(yīng)用中會存在大量的數(shù)據(jù)庫操作,針對數(shù)據(jù)庫句柄連接數(shù)據(jù)庫的行為,使用單例模式可以避免大量的new操作。因為每一次new操作都會消耗系統(tǒng)和內(nèi)存的資源。

具體使用例子:

<?php
/**
 * by m.fzitv.net
 */
class Mysql{
 //該屬性用來保存實例
 private static $instance;
 private $conn;
 //構(gòu)造函數(shù)為private,防止創(chuàng)建對象
 private function __construct(){
 $this->conn = mysql_connect('localhost','root','123456');
 //...
 }
 //創(chuàng)建一個用來實例化對象的方法
 public static function getInstance(){
 if(!(self::$instance instanceof self)){
  self::$instance = new self;
 }
 return self::$instance;
 }
 //防止對象被復(fù)制
 public function __clone(){
 trigger_error('Clone is not allowed !');
 }
 //...
 public function query(){
 //do something
 }
}
//使用單例調(diào)用類中的方法,不能new 和 clone
Mysql::getInstance()->query();
?>

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • PHP中sleep()函數(shù)的實用場景以及注意事項

    PHP中sleep()函數(shù)的實用場景以及注意事項

    sleep()函數(shù)是PHP中的一個休眠函數(shù),可以讓程序在指定的時間內(nèi)暫停執(zhí)行,以達(dá)到延遲執(zhí)行的效果,本文介紹使用sleep()函數(shù)的實用場景以及注意事項
    2023-09-09
  • Linux下安裝oracle客戶端并配置php5.3

    Linux下安裝oracle客戶端并配置php5.3

    這篇文章主要介紹了Linux下安裝oracle客戶端并配置php5.3,需要的朋友可以參考下
    2014-10-10
  • PHP number_format函數(shù)原理及實例解析

    PHP number_format函數(shù)原理及實例解析

    這篇文章主要介紹了PHP number_format函數(shù)原理及實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • 詳解PHP隊列的實現(xiàn)

    詳解PHP隊列的實現(xiàn)

    這篇文章主要介紹了PHP隊列的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • PHP7下安裝并使用xhprof性能分析工具

    PHP7下安裝并使用xhprof性能分析工具

    這篇文章主要介紹了PHP7下安裝并使用xhprof性能分析工具,對性能感興趣的朋友,可以研究下
    2021-04-04
  • Ajax+PHP快速上手及簡單應(yīng)用說明

    Ajax+PHP快速上手及簡單應(yīng)用說明

    對于Ajax,最核心的一個對象是XMLHttpRequest,所有的Ajax操作都離不開對這個對象的操作
    2013-07-07
  • php使用codebase生成隨機(jī)數(shù)

    php使用codebase生成隨機(jī)數(shù)

    這篇文章主要介紹了php使用codebase生成隨機(jī)數(shù)的示例,需要的朋友可以參考下
    2014-03-03
  • PHP利用遞歸函數(shù)實現(xiàn)無限級分類的方法

    PHP利用遞歸函數(shù)實現(xiàn)無限級分類的方法

    今天小編就為大家分享一篇關(guān)于PHP利用遞歸函數(shù)實現(xiàn)無限級分類的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • php中簡單的對稱加密算法實現(xiàn)

    php中簡單的對稱加密算法實現(xiàn)

    最近突發(fā)奇想要往數(shù)據(jù)庫里保存一些機(jī)密的東西,然后就想著怎么讓別人即使進(jìn)入到了數(shù)據(jù)庫也看不懂存儲的是什么,那么只有加密了;可是我們自己還要看呢,那只能找一些對稱加密的算法了,我們想看的時候再解密回來。下面就介紹了php中簡單的對稱加密算法實現(xiàn)。
    2017-01-01
  • PHP中運用jQuery的Ajax跨域調(diào)用實現(xiàn)代碼

    PHP中運用jQuery的Ajax跨域調(diào)用實現(xiàn)代碼

    PHP中運用jQuery的Ajax跨域調(diào)用實現(xiàn)代碼,需要的朋友可以參考下
    2012-02-02

最新評論

高尔夫| 湘西| 临夏市| 昭平县| 三台县| 望奎县| 大邑县| 清流县| 荥经县| 新源县| 东辽县| 南华县| 贡山| 彭山县| 铁力市| 利辛县| 桐柏县| 阿鲁科尔沁旗| 灵山县| 鱼台县| 高淳县| 多伦县| 边坝县| 泸溪县| 辽阳市| 固安县| 社会| 东海县| 偏关县| 湘潭市| 商都县| 白山市| 航空| 吴堡县| 靖边县| 弥渡县| 徐闻县| 伊宁县| 安丘市| 府谷县| 孟州市|