單例模式確保某個類只有一個實例,而且自行實例化並向整個系統提供這個實例。
爲什麼使用單例模式呢
使用單例模式可以避免大量的new操作。因爲每一次new操作都會消耗系統和內存的資源。
**單例模式特點(三私一公)
私有的構造方法 (防止類外實例化)
私有的克隆方法 (防止通過克隆生成對象)
私有的靜態屬性 (保存類的實例)
公有的靜態方法 (調取這個類相當一個接口 )**
<?php
/*
*describe:單例模式
*/
header("content-type:text/html;charset=utf-8");
//final 修飾類 不可被繼承 最終的類
final class Single{
//$self 靜態私有變量 實例化後賦值
static private $self = NULL;
private $num = 0;
private function __construct(){
$this->num += 1;
echo "實例化成功<br/>";
}
//防止被克隆
private function __clone(){
die("實例化失敗");
}
//靜態公有接口
static public function getInstanceof(){
//判斷對象是否已實例化
if(!self::$self instanceof self){
self::$self = new self();
return self::$self;
}else{
return self::$self;
}
}
public function getnum(){
return $this->num."<hr/>";
}
}
?>