1. 程式人生 > 實用技巧 >23中設計模式-單例模式

23中設計模式-單例模式

什麼是單例模式:

單例設計模式,就是採取一定的方法保證在整個軟體系統中,對於某個類來說只能存在一個例項化物件

程式碼實現:
package com.atguigu.javase;
//設計模式
/**單例設計模式,對某個類來說只能存在一個new例項化物件。
* */
public class SingleTon {
public static void main(String[] args) {
Back back1=Back.getInstance();
Back back2=Back.getInstance();
System.out.println(back1==back2);
}
// Back back=new Bcak();
}
class Back{
//私有化構造器
private Back(){}
//內部建立類的物件
private static Back instence=new Back();
//提供公共的靜態方法,返回值為物件
public static Back getInstance(){
return instence;
}
}
建立了一個物件,所以返回的結果為true,

單例模式原理:

首先,將該類的建構函式私有化(目的是禁止其他程式建立該類的物件);

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

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

直白的講就是,你不能用該類在其他地方建立物件,而是通過該類自身提供的方法訪問類中的那個自定義物件。

那麼問題的關鍵來了,程式呼叫類中方法只有兩種方式,①建立類的一個物件,用該物件去呼叫類中方法;②使用類名直接呼叫類中方法,格式“類名.方法名()”;

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

而使用類名直接呼叫類中方法,類中方法必須是靜態的,而靜態方法不能訪問非靜態成員變數,因此類自定義的例項變數也必須是靜態的。

這就是單例模式唯一例項必須設定為靜態的原因。