單例模式中唯一實例為什么要用靜態?

單例模式中唯一實例為什么要用靜態?想要回答這個問題,你需要明白單例模式是如何實現的。從本質上理解清楚實現原因,前面的問題也就解決了。

單例模式實現過程如下:

首先,將該類的構造函數私有化(目的是禁止其他程序創建該類的對象);

其次,在本類中自定義一個對象(既然禁止其他程序創建該類的對象,就要自己創建一個供程序使用,否則類就沒法用,更不是單例);

最后,提供一個可訪問類自定義對象的類成員方法(對外提供該對象的訪問方式)。

說直白一點,你不能用該類在其他地方創建對象,而是通過該類自身提供的方法訪問類中的那個自定義對象。

那么問題的關鍵來了,程序調用類中方法只有兩種方式,①創建類的一個對象,用該對象去調用類中方法;②使用類名直接調用類中方法,格式“類名::方法名()”;

上面說了,構造函數私有化后第一種情況就不能用,只能使用第二種方法。

而使用類型直接點用類中的方法,類種方法必須是靜態的,而靜態方法不能訪問非靜態成員變量,因此類自定義的實例變量也必須是靜態的。這就是單例模式唯一實例必須設置為靜態的原因。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 單例模式(SingletonPattern)一般被認為是最簡單、最易理解的設計模式,也因為它的簡潔易懂,是項目中最...
    成熱了閱讀 4,298評論 4 34
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,767評論 18 399
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • 一:java概述:1,JDK:Java Development Kit,java的開發和運行環境,java的開發工...
    ZaneInTheSun閱讀 2,689評論 0 11
  • 文/魏千洛 昨天狠狠吐槽了團貸網,作為半個互聯網相關的從業者,真的無法忍受一個用戶體驗如此差的平臺,但是,看在收益...
    千洛讀書閱讀 4,706評論 8 8