Java中的單例設計模式

2021-06-22 15:36:32 字數 1346 閱讀 2584

何為單例設計模式:乙個類在記憶體中只允許存在乙個物件

單例設計模式要保證物件的唯一性

如何保證物件的唯一性:

1、為避免其他程式過多建立該類物件,先禁止其他程式建立該類物件

2、為讓其他程式可以訪問該類物件,先在本類中建立乙個物件

3、為了方便其他程式對物件的訪問,要提供一些訪問的方式

如何實現:

1、將建構函式私有化。

2、在本類中建立乙個物件。

3、對外提供乙個方法,可以訪問該物件。

對於事物該怎麼描述,還怎麼描述。但需要該事物的物件在記憶體中唯一時,採用單例設計模式

兩種單例設計模式:

1、 餓漢式

class single

privatestatic single s = new single();

publicstatic single get()

2、 懶漢式

class single

privatestatic single s = null;

publicstatic single get()

return  s;

}物件是方法被呼叫時,才建立。

single類進記憶體,物件還不存在,只有呼叫get方法後,才建立物件

餓漢式是先建立乙個物件,然後提供方法讓其他程式使用物件。

懶漢式,在多個程式訪問物件時,會發生執行緒安全問題。cpu在乙個時鐘週期內,只會執行乙個程式。當a程式判斷s為空時,cpu可能不再執行a程式,而切換到b程式,b程式建立物件後,cpu再切換回a程式,a程式可能還會建立乙個物件。這樣記憶體中的物件就不唯一。

解決方法,可以在訪問物件方法上加入乙個執行緒鎖,保證乙個程式訪問結束後,再執行下乙個程式,從而保證物件的唯一性

class single

privatestatic single s = null;

publicstatic synchronized single get()

return  s;

}class single

privatestatic single s = null;

publicstatic single get()

}return s;

}定義單例設計模式時,多使用餓漢式

java 中的設計模式 單例模式

單例模式 當有程式中只想保持物件的乙份例項的時候通常會使用 單例模式 1 在多執行緒中 若每乙份執行緒都儲存乙份例項 通常與threadlocal一起使用 2 若多執行緒訪問同乙份例項 則要加多執行緒訪問控制 reentrantlock 雙重檢查鎖等 public class singleinsta...

Java中的單例設計模式

設計模式 解決某一類問題最行之有效的方法。單例設計模式 解決乙個類在記憶體只存在乙個物件。想要保證物件唯一。1,為了避免其他程式過多建立該類物件。先禁止其他程式建立該類物件 2,還為了讓其他程式可以訪問到該類物件,只好在本類中,自定義乙個物件。3,為了方便其他程式對自定義物件的訪問,可以對外提供一些...

Java中的單例設計模式

這只是一點點 時間有限就先說這些吧,具體後面可以的話說說餓漢式和懶漢式,我也是初者,若有什麼出錯誤之處還請不吝賜教。單例設計模式 singleton 作用 可以保證乙個類的唯一性 使用場景 多個程式都要使用乙個配置檔案中的資料,而且實現資料共享和多程式的資料交換。必須要將多個資料封裝到乙個物件中,而...