php 設計模式 - 單例

概述:php

     做爲對象的建立模式,單例確保某一個內在系統中只存在一個實例,它不能夠建立副本。
克隆函數(__clone )以及構造函數(__construct )必須聲明爲私用, 防止外部程序 建立一個新類 ,而失去單例模式的意義。

PHP 語言是一種解釋型的語言,在頁面執行完成後,全部的相關資源都會被回收。PHP在語言級別上,不能像C#,JAVA編譯型語言同樣,沒辦法讓某個對象長距內存。
然而在單一請求場景時,仍是能夠經過單例模式來共享對象,好比數據庫鏈接對象。


class DbConnection
{

    private static $_instance;
    private static $token = 0;

    public static function  getInstance()
    {
        if (static::$_instance instanceof DbConnection) {
            return static::$_instance;
        }
        // 隨機生產一個 token 標示當前內
        static::$token = rand(100, 1000);
        static::$_instance = new DbConnection();
        return static::$_instance;
    }


    // 克隆函數以及構造函數必須聲明爲私用,
    // 防止外部程序 建立一個新類 ,而失去單例模式的意義。
    private function  __clone()
    {

    }

    private function  __construct()
    {

    }

    public function  open()
    {
        echo "init times:" . static::$token . '<br/>';
    }


}

  

單例與static 類的 比較:數據庫

   一、singleton 可以很好的保持對象的面相對象,好比靜態工具類則能夠使用 static。  二、單例能夠實現自某接口,能夠繼承自某類。靜態類也能夠繼承自某類,可是就無法使用父類裏面的protect成員了。
相關文章
相關標籤/搜索