《php物件導向》 第13課 單例模式

2021-09-26 14:21:33 字數 1163 閱讀 9469

單例模式,就是指乙個類只有乙個物件例項。這樣做的好處,可以防止頻繁建立物件而造成資源浪費。

設計單例模式,需要注意以下幾點:

乙個類只能有乙個物件;

必須是自行建立這個類的物件;

要向整個系統提供這乙個物件;

封裝單例模式的類時,需做到以點幾點:

只提供私有的建構函式,

含有乙個該類的靜態私有物件,

提供乙個靜態的公有的函式用於建立或獲取它本身的靜態私有物件。

有乙個private的clone方法,防止轉殖;

說到底,設計單例模式,需要有靜態成員。下面我們來看乙個例項:

<?php 

//單例

class uni

//防止轉殖物件

private function __clone()

static public function getinstance()

return self::$instance;

}//普通方法

public function method()

}$ob1 = uni::getinstance(); //獲取uni的物件

$ob1->method();

echo "

";$ob2 = uni::getinstance();

$ob2->method();

echo "

";if ($ob1 === $ob2) else

執行結果如下 :

如果不使用單例模式,那麼ob1和ob2就是兩個物件

<?php 

class book

}$b1 = new book();

$b1->method();

$b2 = new book();

$b2->method();

if ($b1 === $b2) else

執行結果如下:

在類的外部,例項化物件的個數是無法控制的。

PHP物件導向 單例模式

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

Php物件導向 單例模式

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

物件導向 單例模式

設計模式 解決某一類問題行之有效的解決辦法 思想 單例 singleton 設計模式 學習設計模式必須先弄清楚它是解決什麼問題的。單例是解決什麼問題的呢?可以保證乙個類的物件唯一性。場景 比如多個程式都要使用乙個配置檔案中的資料,而且要實現資料共享和交換。必須要將多個資料封裝到乙個物件中。而且多個程...