本文實例講述了php實現singleton()單例模式的方法。分享給大家供大家參考。具體實現方法如下:
common.php文件如下:
復制代碼 代碼如下:<?php
class CC
{
private static $ins;
public static function singleton()
{
if (!isset(self::$ins)){
$c = __CLASS__;
self::$ins = new $c;
}
return self::$ins;
}
public function EventResult($Id)
{
return $Id;
}
}
?>
index.php文件如下:
復制代碼 代碼如下:<html>
<head>
<title>測試</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<?php
require 'common.php';
$objCC=CC::singleton();
$r=$objCC->EventResult(7);
print_r($objCC);
echo $r."</br>";
?>
</body></html>
希望本文所述對大家的PHP程序設計有所幫助。
package test;
public class Singleton {
private Singleton s;
private Singleton()
{
}
public static Singleton getSigleton()
{
if(s==null)s=new Singleton();
return s;
}
}
這就是一個單例模式,我想應該不用注釋了,原理就是這個類的構造方法private了,所有在外邊不能調用,也就不能new Singleton();得到實例,那麼
想得到實例就得調用它的靜態方法getSigleton();即Singleton.getSigleton();就會返回一個Singleton的實例,注意此方法中的語句,即如果你是第一次調用這個方法那麼它會給你new一個實例,以後再調用得到的都是這個實例,也就是說從始至終就只有一個Singleton的實例,這就是單例模式。
你給出的代碼中,單例不是同步
dao一般也是用單例模式
在DAO類中 類的成員變量是會出現如你所說的並發安全,但是一般DAO的類變量都是有關數據源連接的,一般情況下都是一樣的,所以即使是並發調用也不影響。
在DAO方法中的局部變量 都是線程獨立的,不存在並發沖突的問題。