單例模式:就是乙個類乙個例項。
直接上**(c++版):
/**
* name:單例模式
* define:乙個類只有乙個例項
* time:15/8/9 20:00
*/#include using namespace std;
class singleton
static singleton* instance;
public:
static singleton* getinstance()
return instance;
} void say() };
singleton* singleton::instance = 0; //注意這個地方,別寫掉了
int main()
這裡面要注意的地方singleton* singleton::instance = 0;
把類的靜態變數在累的外面重新定義一下,我也不知道為什麼— 。—,之前沒寫一直報錯。
特別注意:
單執行緒的時候這樣寫是乙個例項,當多執行緒的時候就有可能是多個例項了。我查了一下啊,用lock() 和~lock() 可以解決的,這裡我就不說了。
php是單執行緒的。
乙個私有的 靜態的 構造方法;(確保使用者無法通過建立物件對其進行例項化)
· 乙個公有的 靜態的 方法;(負責對其本身進行例項化)
· 乙個私有的 靜態的 屬性;(用於儲存僅有的乙個例項化物件)
上個php版的。
<?php
class singleton;
//只有通過這個方法才能返回本類中的物件,該方法是靜態方法 用類名呼叫
public static getinstance()
return self::$instance;
}public function query($sql)
}$instance=singleton::getinstance(); //只能使用靜態方法getinstance()去獲取singleton類的物件
$instance->query("********");
23種設計模式 單例模式
某些情況,如 執行緒池,乙個專案中匯流排程數量以及生命週期,可能需要統一控制 如果執行緒池自身可建立多個例項,那麼就無法統一控制,此時,只要能控制線程池物件的數量為乙個,那麼就可以實現統一控制的目標 注意 現實中真正使用純的單例模式並不多 如 spring bean 通過配置來決定是否使用單例 執行...
單例模式(23種設計模式)
單例模式 餓漢模式 class singletondemo public static singletondemo gets 懶漢模式 class singletondemo1 public static singletondemo1 gets return instance 單例模式,懶漢式,執行...
23種設計模式 單例模式
單例模式需要保證,構造方法一定是私有化的,並且類的全域性變數必須是靜態的,私有的 這樣才能有唯一的例項化途徑 錯誤 一 public class singleton public static singleton getinstance 上述方法,並沒有把類變數singleton設定為靜態的,這樣,...