PHP 物件導向之單例模式 有些類也需要計畫生育

2022-08-10 17:57:11 字數 1176 閱讀 3913

乙個類只有乙個例項物件

1、含義

作為物件的建立模式,單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統全域性的提供這個例項。它不會建立例項副本,而是會向單例類內部儲存的例項返回乙個引用。

2、單例模式的三個要點

1)、乙個類的唯一例項的靜態成員變數:

private static $instance;

2)、建構函式和轉殖函式必須宣告為私有的,防止外部程式new類從而失去單例模式的意義:

private function __construct()

private function __clone()

3)、必須提供提供乙個訪問這個例項的公共的靜態方法(一般為getinstance方法),從而返回唯一例項的乙個引用:

public static function getinstance()

if (static::$instance == null)   //或者 if (!(self::$_instance instanceof self))

static::$instance == new self();

return static::$instance;

測試demo:

<?php 

class singleton

private static $instance;

private function __construct(){}

public static function getinstance()

if (static::$instance == null)

static::$instance == new singleton();

return static::$instance;

//客戶端**

$s1 = singleton::getinstance();

$s2 = singleton::getinstance();

if ($s1 == $2) 

echo "same class";

總結:單例模式,保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。使用單例模式可以避免大量的new操作,因為每一次new操作都會消耗系統和記憶體的資源。

單例模式因為singleton類封裝它的唯一例項,這樣它可以嚴格的控制客戶怎樣訪問以及何時訪問它,簡單來說就是對唯一例項的受控訪問。

PHP物件導向 單例模式

單例模式 singleton pattern 單例模式 singleton pattern 是最簡單的設計模式之一。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。這種模式涉及到乙個單一的類,該類負責建立自己的物件,同時確保只有單個物件被建立。這個類提供了一種訪問其唯一的物件的方式...

Php物件導向 單例模式

php物件導向 單例模式 保證類只有乙個例項 1.如何可以解決乙個類可以被無限地例項化?new,就能例項化一次,怎麼去限制,使用者不能無限次地new?將構造方法私有化。所有外部的new都操作失敗 class mysqldb private function construct 2.一旦構造方法私有化...

php物件導向開發之 單例模式

php的全域性變數給程式設計帶來了很大的靈活性,但全域性變數的不受約束性也帶來了很大的隱患。單例模式可以很好的替代全域性變數。假設有一朵花,每個人見到都會去澆花,然後再欣賞它。class flower public function look a new flower 將輸出 2013 01 08 ...