国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java設計模式(八)— 單例模式3

這篇具有很好參考價值的文章主要介紹了Java設計模式(八)— 單例模式3。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

系列文章目錄

單例模式之靜態(tài)內部類
單例模式之枚舉方式
單例模式之JDK源碼分析



前言

Hello,小伙伴們,歡迎來到柚子的博客~讓我們一起成長吧o( ̄▽ ̄)ブ


提示:以下是本篇文章正文內容,下面案例可供參考

一、單例—靜態(tài)內部類

1.靜態(tài)內部類案例

代碼如下(示例):

//靜態(tài)內部類完成
class Singleton {
	private static volatile Singleton instance;
	//構造器私有化
	private Singleton() {}
	//寫一個靜態(tài)內部類,該類中有一個靜態(tài)屬性 Singleton
	private static class SingletonInstance {
		private static final Singleton INSTANCE = new Singleton();
	}
	//提供一個靜態(tài)的公有方法,直接返回SingletonInstance.INSTANCE
	public static Singleton getInstance() {
		return SingletonInstance.INSTANCE;
	}
}

類被裝載的時候,類里面的靜態(tài)內部類也是會被裝載的,而且線程是安全的

特點:
(1)當外部類被裝載的時候,靜態(tài)內部類也會被裝載。
(2)當靜態(tài)內部類在調 getInstance方法時,會導致靜態(tài)內部類的裝載,而且只會裝載一次,而且裝載的時候線程是安全的,所以可以達到懶加載+安全的效果。
(3)final方法進內嵌,但是方法太大的時候反而會降低性能,在裝載類的時候,使用了jvm底層提供的裝載機制,保證了初始化是安全的。

2.靜態(tài)內部類優(yōu)缺點

(1)這種方式采用了類裝載的機制來保證初始化實例時只有一個線程。
(2)靜態(tài)內部類方式在Singleton類被裝載時并不會立即實例化,而且在需要實例化時,調用getInstance方法,才會裝載SingletonInstance類,從而完成Singleton的實例化。
(3)類的靜態(tài)屬性只會在第一次加載類的時候初始化,所以在這里,JVM幫助我們保證了線程的安全性,在類進行初始化時,別的線程是無法進入的。
(4)優(yōu)點:避免了線程不安全,利用靜態(tài)內部類特點實現延遲加載,效率高。
(5)缺點:會造成內存浪費。
(6)結論:推薦使用。

二、單例—枚舉方式

1.枚舉方式案例

代碼如下(示例):

public class SingletonTest08 {
	public static void main(String[] args) {
		Singleton instance = Singleton.INSTANCE;
		Singleton instance2 = Singleton.INSTANCE;
		System.out.println(instance == instance2);
		System.out.println(instance.hashCode());
		System.out.println(instance2.hashCode());
	}
}
enum Singleton {
	INSTANCE;//屬性
	public void sayOk() {
		System.out.println("ok~");
	}
}

(1)這是一個枚舉系統(tǒng),里面定義了一個INSTANCE的屬性,那這里面也可以提供相應的方法。
(2)枚舉類型中的每個屬性的類型都是枚舉類型的,因此每個屬性都是一個單例
使用枚舉,可以實現單例。

2.枚舉方式優(yōu)缺點

(1)這借助JDK1.5中添加的枚舉來實現單例模式。不僅能避免多線程同步問題,而且還能防止反序列化重新創(chuàng)建新的對象。
(2)這種方式是Effective Java作者Josh Bloch提倡的方式。
(3)結論:推薦使用。

三、單例—JDK源碼分析

1.JDK源碼分析

在我們JDK中,java.lang.Runtime就是經典的單例模式
Java設計模式(八)— 單例模式3
靜態(tài)屬性:currentRuntime
靜態(tài)方法:getRuntime(),把事先創(chuàng)建好的currentRuntime返回
構造方法:Runtime(),私有化
使用的是單例模式中的餓漢式,上來就進行創(chuàng)建,避免了多線程的問題。

四、單例模式注意事項和細節(jié)說明

(1)單例模式保證了系統(tǒng)內存中該類只存在一個對象,節(jié)省了系統(tǒng)資源,對于一些需要頻繁創(chuàng)建銷毀的對象,使用單例模式可以提高系統(tǒng)性能。
(2)當想實例化一個單例類的時候,必須要記住使用相應的獲取對象的方法,而不是使用new。
(3)單例模式使用的場景:需要頻繁的進行創(chuàng)建和銷毀的對象、創(chuàng)建對象時耗時過多或耗費資源過多(即:重量級對象),但又經常用到的對象、工具類對象、頻繁訪問數據庫或文件的對象(比如數據源、session工廠等)


總結

單例模式之靜態(tài)內部類——推薦使用
單例模式之枚舉方式——推薦使用


╭?? ? ??╮
( ????? ?? )感覺有用的話,歡迎點贊評論呀!
╰?? ? ??╯文章來源地址http://www.zghlxwxcb.cn/news/detail-489458.html

到了這里,關于Java設計模式(八)— 單例模式3的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Java 設計模式——單例模式

    Java 設計模式——單例模式

    (1)單例模式 (Singleton Pattern) 是 Java 中最簡單的設計模式之一。它提供了一種創(chuàng)建對象的最佳方式。 這種模式涉及到一個單一的類,該類負責創(chuàng)建自己的對象,同時確保只有單個對象被創(chuàng)建。這個類提供了一種訪問其唯一的對象的方式,可以直接訪問,不需要實例化該類的

    2024年02月13日
    瀏覽(20)
  • Java設計模式-單例模式

    單例模式是一種設計模式,它確保一個類只能創(chuàng)建一個實例,并提供一種全局訪問這個實例的方式。在Java中,單例模式可以通過多種方式來實現,其中最常見的是使用私有構造函數和靜態(tài)方法實現 在Java中,實現單例模式的方式有多種,其中最常見的實現方式包括以下幾種:

    2024年02月01日
    瀏覽(27)
  • Java設計模式---單例 工廠 代理模式

    單例模式是設計模式中的一種,屬于創(chuàng)建型模式。在軟件工程中,單例模式確保一個類只有一個實例,并提供一個全局訪問點。這種模式常用于那些需要頻繁實例化然后引用,且創(chuàng)建新實例的開銷較大的類,例如數據庫連接池、緩存管理等。 意圖 :保證一個類僅有一個實例

    2024年01月24日
    瀏覽(28)
  • 設計模式篇(Java):單例模式

    設計模式篇(Java):單例模式

    上一篇:設計模式篇(Java):前言(UML類圖、七大原則) 所謂類的單例設計模式,就是采取一定的方法保證在整個的軟件系統(tǒng)中,對某個類只能存在一個對象實例,并且該類只提供一個取得其對象實例的方法(靜態(tài)方法)。 構造器私有化 (防止 new ) 類的內部創(chuàng)建對象 向外暴露一個靜

    2024年02月11日
    瀏覽(29)
  • java設計模式-單例

    單例模式是一種創(chuàng)建型設計模式,它可以保證一個類只有一個實例,并提供全局訪問點。單例模式在實際開發(fā)中經常使用,可以避免多個實例引起的資源浪費和同步問題。常見的java實現方式有多種。 餓漢式單例模式是指在類加載時就創(chuàng)建了單例對象,因此在調用時不需要再

    2024年01月18日
    瀏覽(25)
  • Java與設計模式(4):單例模式

    單例模式是一種創(chuàng)建型設計模式,它確保一個類只有一個實例,并提供全局訪問點來訪問該實例。 在單例模式中,類的構造函數被私有化,從而禁止外部直接實例化該類。通過一個靜態(tài)方法或靜態(tài)變量來控制類的實例化過程,并返回同一個實例。 單例模式的特點包括: 單一

    2024年02月12日
    瀏覽(27)
  • java設計模式-單例模式(Singleton)

    單例模式(Singleton)就是一個類只能有一個實例,自行實例化,并向系統(tǒng)提供這一實例,這個類就是單例類。單例模式的特點: 一個類只能有一個實例; 單例類自己實例化; 單例類給其它對象提供這個單一實例。 資源管理類經常被設計為單例模式,例如管理屬性文件的類。

    2024年02月15日
    瀏覽(19)
  • Java設計模式之單例模式

    Java設計模式之單例模式

    定義:保證一個類僅有一個實例,并提供一個全局訪問點 類型:創(chuàng)建型 想確保任何情況下都絕對只有一個實例 例如:線程池,數據庫連接池一般都為單例模式 單例模式優(yōu)點 在內存中只有一個實例,減少內存開銷 可以避免對資源的多重占用 設置全局訪問點,嚴格控制訪問

    2024年02月02日
    瀏覽(56)
  • Java設計模式(八)— 單例模式3

    Java設計模式(八)— 單例模式3

    單例模式之靜態(tài)內部類 單例模式之枚舉方式 單例模式之JDK源碼分析 Hello,小伙伴們,歡迎來到柚子的博客~讓我們一起成長吧o( ̄▽ ̄)ブ 提示:以下是本篇文章正文內容,下面案例可供參考 代碼如下(示例): 類被裝載的時候,類里面的靜態(tài)內部類也是會被裝載的,而且線

    2024年02月09日
    瀏覽(54)
  • 03-JAVA設計模式-單例模式詳解

    03-JAVA設計模式-單例模式詳解

    單例模式(Singleton Pattern)是設計模式中的一種,它確保一個類僅有一個實例,并提供一個全局訪問點來訪問該實例。這種設計模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式。 單例模式的應用場景十分廣泛,主要涉及需要頻繁使用某個對象而又不想重復創(chuàng)建的情況

    2024年04月13日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包