23種設計模式 單例模式(c 版和php版)

2021-07-04 10:59:36 字數 1181 閱讀 5906

單例模式:就是乙個類乙個例項。

直接上**(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設定為靜態的,這樣,...