7.7.4 單態(tài)(單例、單件)設(shè)計模式

7.7.4 單態(tài)(單例、單件)設(shè)計模式

單態(tài)模式的主要作用是保證在面向?qū)ο缶幊淘O(shè)計中,一個類只能有一個實例對象存在。

<?php
    class DB {
        private static $obj = null;            //聲明一個私有的,靜態(tài)的成員屬性$obj
        private function __construct() {  //私有構(gòu)造方法,只能在類的內(nèi)部實例化對象 
    echo "連接數(shù)據(jù)庫成功<br>";
        }   
        public static function getInstance() {     // 通過此靜態(tài)方法才能獲取本類的對象
            if(is_null(self::$obj))                 //如果本類中的$obj為空,說明還沒有被實例化過
                self::$obj = new self();         //實例化本類對象  
            return self::$obj;                      //返回本類的對象
        }
        public function query($sql) {      //執(zhí)行SQL語句完成對數(shù)據(jù)庫的操作
            echo $sql;
        }
    }
    $db = DB::getInstance();                  //只能使用靜態(tài)方法getInstance()去獲取DB類的對象
    $db -> query("select * from user");   //訪問對象中的成員

test.php

<?php
/* 
 * 單態(tài)(單例, 單件)設(shè)計模式 -- 最適合PHP使用這個設(shè)計模式
 *
 *
 *   1. 如果想讓一個類, 只能有一個對象, 就要先讓這個類, 不能創(chuàng)建對象 , 將構(gòu)造方法 private
 *
 *   2. 可以在類的內(nèi)存使用一個表態(tài)方法,來創(chuàng)建對象
 *
 *
 */
    class Person {

        static $obj = null; 

        private function __construct() {
            
        }

        static function getObj() {

            //如果第一次調(diào)用時, 沒有對象則創(chuàng)建, 以后調(diào)用時, 直接使用第一次創(chuàng)建的對象
            if(is_null(self::$obj))
                self::$obj = new self;

            return self::$obj;
        }


        function __destruct() {
        
            echo "################<br>";
        }

        function say() {
            echo "aaaaaaaaaaaaaaaaa<br>";
        }
    }

    
    $p = Person::getObj();
    $p = Person::getObj();
    $p = Person::getObj();
    $p = Person::getObj();
    $p = Person::getObj();
    $p = Person::getObj();
    $p = Person::getObj();
    $p = Person::getObj();
    $p = Person::getObj();
    $p = Person::getObj();
    $p = Person::getObj();
    $p = Person::getObj();
    $p = Person::getObj();

    $p -> say();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • PHP 學(xué)習(xí)目錄 ├─PHP視頻教程 1 LAMP網(wǎng)站構(gòu)建 │ ├─PHP教程 1.1.1 新版視頻形式介紹│ ...
    曹淵說創(chuàng)業(yè)閱讀 16,288評論 29 417
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,680評論 19 139
  • 目錄 本文的結(jié)構(gòu)如下: 什么是單例模式 為什么要用該模式 模式的結(jié)構(gòu) 代碼示例 優(yōu)點和缺點 適用環(huán)境 模式應(yīng)用 總...
    w1992wishes閱讀 486評論 1 2
  • 又要了一個畢業(yè)季,大家是不是忙著面試拿offer了。雖說出去混還是得靠真才實學(xué),但是穿得出色絕對也是讓人眼前一亮。...
    拍范閱讀 496評論 0 0
  • 翻譯自官網(wǎng), 水平有限,用于自查。轉(zhuǎn)載請注明網(wǎng)址: http://www.itdecent.cn/p/f53ce0...
    朱柏霖閱讀 1,350評論 0 1

友情鏈接更多精彩內(nèi)容