php單例模式的研究

2022-02-11 10:21:08 字數 1132 閱讀 1481

幾個關鍵點:

1,物件p應該可以被系統中的任何物件使用

2,物件p不應該被儲存在會被覆寫的全域性變數總

3,系統中不應該超過乙個p物件,也就是說,y物件可以設定p物件的乙個屬性,而z物件不需要通過其他物件(假如y和z都可以訪問p物件)就可以直接獲得該屬性的值

實現:下面建立了乙個無法從其自身外部來建立例項的類,聽起來有些難,其實只要簡單的定義乙個私有的構造方法即可:

<?php

class

p

public

function setproperty($key,$val

)

public

function getproperty($key

)}

上面的類,由於構造方法被設定為私有,客戶端**無法例項化物件。因此setproperty和getproperty方法目前也是多餘的。

不過我們可以使用靜態方法和靜態熟悉來例項化物件:

<?php

class

p

return self::$instance

; }

private

function

__construct(){}

public

function setproperty($key,$val

)

public

function getproperty($key)}

$pref = p::getinstance();

$pref->setproperty("name","mattttttt");

var_dump($pref

);unset($pref);//

移除引用

$pref2 = p::getinstance();

var_dump($pref2

);$pref2->setproperty("name","masssssssssssss");

var_dump($pref2

);print

$pref2->getproperty("name");//

該屬性值並沒有丟失

//輸出 matttttttt

PHP單例模式

模式對於oop開發人員尤其有用,因為他有助於建立穩定的api,並且仍然保持一定的靈活度。一種模式可以幫助我們定義負責完成特定任務的物件,還可以允許我們全部修改掉某個類而不用修改與這些類打交道的 前者被稱為類的職責,後者被稱為類的多型性。單例模式被當作職責模式,他用來在應用程式中建立乙個單一的功能訪問...

php單例模式

單例模式 單例類 1 建構函式需要標記為private 訪問控制 防止外部 使用new操作符建立物件 單例類不能在其他類中例項化,只能被其自身例項化 2 擁有乙個儲存類的例項的靜態成員變數 3 擁有乙個訪問這個例項的公共的靜態方法 常用getinstance 方法進行例項化單例類,通過instanc...

php 單例模式

單例模式 身份證號碼 單例類identitycardno 身份證號碼類 class identitycardno public function getinstance else return self instance private function setidentitycardno no p...