中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

免費(fèi)做網(wǎng)站公司哪家好百度公司官網(wǎng)入口

免費(fèi)做網(wǎng)站公司哪家好,百度公司官網(wǎng)入口,wordpress插入鏈接,建網(wǎng)站推廣效果怎么樣一、介紹 采取一定的方法保證在整個(gè)的軟件系統(tǒng)中,對(duì)某個(gè)類只能存在一個(gè)對(duì)象實(shí)例,并且該類只提供一個(gè)取得其對(duì)象實(shí)例的方法。 不使用單例模式的UML類圖: 使用單例模式的UML類圖: 使用場(chǎng)景: 需要頻繁創(chuàng)建或銷毀的對(duì)象…

一、介紹

采取一定的方法保證在整個(gè)的軟件系統(tǒng)中,對(duì)某個(gè)類只能存在一個(gè)對(duì)象實(shí)例,并且該類只提供一個(gè)取得其對(duì)象實(shí)例的方法。

不使用單例模式的UML類圖:

請(qǐng)?zhí)砑訄D片描述

使用單例模式的UML類圖:

請(qǐng)?zhí)砑訄D片描述

使用場(chǎng)景:

  • 需要頻繁創(chuàng)建或銷毀的對(duì)象
  • 創(chuàng)建對(duì)象耗時(shí)過多或耗費(fèi)資源過多,但又經(jīng)常用到
  • 工具類對(duì)象
  • 頻繁訪問數(shù)據(jù)庫(kù)或文件的對(duì)象

二、Java版實(shí)現(xiàn)

1. 餓漢式(靜態(tài)常量)

//餓漢式(靜態(tài)變量)
class Singleton {//1. 構(gòu)造器私有化, 外部能newprivate Singleton() {}//2.本類內(nèi)部創(chuàng)建對(duì)象實(shí)例private final static Singleton instance = new Singleton();//3. 提供一個(gè)公有的靜態(tài)方法,返回實(shí)例對(duì)象public static Singleton getInstance() {return instance;}
}

優(yōu)點(diǎn):寫法簡(jiǎn)單,在類裝載的時(shí)候就完成了實(shí)例化,避免了線程同步問題。

缺點(diǎn):在類加載的時(shí)候完成實(shí)例化,沒有達(dá)到懶加載的效果,可能造成內(nèi)存浪費(fèi)。

2. 餓漢式(靜態(tài)代碼塊)

//餓漢式(靜態(tài)變量)
class Singleton {//1. 構(gòu)造器私有化, 外部能newprivate Singleton() {}//2.本類內(nèi)部創(chuàng)建對(duì)象實(shí)例private  static Singleton instance;static { // 在靜態(tài)代碼塊中,創(chuàng)建單例對(duì)象instance = new Singleton();}//3. 提供一個(gè)公有的靜態(tài)方法,返回實(shí)例對(duì)象public static Singleton getInstance() {return instance;}
}

優(yōu)缺點(diǎn)同上。

3. 懶漢式(線程不安全)

class Singleton {private static Singleton instance;private Singleton() {}//提供一個(gè)靜態(tài)的公有方法,當(dāng)使用到該方法時(shí),才去創(chuàng)建 instance//即懶漢式public static Singleton getInstance() {if(instance == null) {instance = new Singleton();}return instance;}
}

優(yōu)缺點(diǎn):起到了懶加載的效果,但只能在單線程下使用,多線程可能創(chuàng)建多個(gè)實(shí)例。

3. 懶漢式(線程安全,同步方法)

// 懶漢式(線程安全,同步方法)
class Singleton {private static Singleton instance;private Singleton() {}//提供一個(gè)靜態(tài)的公有方法,加入同步處理的代碼,解決線程安全問題//即懶漢式public static synchronized Singleton getInstance() {if(instance == null) {instance = new Singleton();}return instance;}
}

優(yōu)缺點(diǎn):解決了線程安全問題,但效率太低,每個(gè)線程在想獲得類的實(shí)例時(shí)候,都需要進(jìn)行同步。

5. 雙重檢查

class Singleton {private static volatile Singleton instance;private Singleton() {}//提供一個(gè)靜態(tài)的公有方法,加入雙重檢查代碼,解決線程安全問題, 同時(shí)解決懶加載問題//同時(shí)保證了效率, 推薦使用public static synchronized Singleton getInstance() {if(instance == null) {synchronized (Singleton.class) {if(instance == null) {instance = new Singleton();}}}return instance;}
}

優(yōu)缺點(diǎn):實(shí)例代碼只需要執(zhí)行一次,后面再訪問時(shí),會(huì)被外層判空語(yǔ)句攔截,避免反復(fù)進(jìn)行方法同步。延遲加載,效率較高。

6. 靜態(tài)內(nèi)部類

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

靜態(tài)內(nèi)部類的特點(diǎn):當(dāng)外部類裝載時(shí),靜態(tài)內(nèi)部類不會(huì)立即實(shí)例化,而是在真正用到時(shí)才會(huì)實(shí)例化。并且靜態(tài)內(nèi)部類保證了線程的安全性。

7. 枚舉

package com.atguigu.singleton.type8;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());instance.sayOK();}
}//使用枚舉,可以實(shí)現(xiàn)單例, 推薦
enum Singleton {INSTANCE; //屬性public void sayOK() {System.out.println("ok~");}
}

優(yōu)缺點(diǎn):不僅可以避免多線程同步問題,而且還能防止反序列化重新創(chuàng)建新的對(duì)象。

三、Golang版實(shí)現(xiàn)

1. 餓漢式

package mainimport "fmt"type Singleton struct {	Name string
}var SingletonInstance Singletonfunc init() {SingletonInstance = Singleton{"singleTonName"};
}func main() {fmt.Printf("SingletonInstance: %v", SingletonInstance)
}

通過init函數(shù)在初始化的時(shí)候加載單例類的實(shí)例。

2. 懶漢式

package mainimport ("fmt""sync"
)type Singleton struct {	Name string
}var (SingletonInstance SingletonSingletonOnce     sync.Once
)func GetInstance() Singleton {SingletonOnce.Do(func() {SingletonInstance = Singleton{"SingletonName"}})return SingletonInstance
}func main() {GetInstance()fmt.Printf("SingletonInstance: %v", SingletonInstance)
}

通過sync.Once實(shí)現(xiàn)在初次使用這個(gè)實(shí)例時(shí)才加載的效果。

http://www.risenshineclean.com/news/21562.html

相關(guān)文章:

  • 寶雞做網(wǎng)站的公司網(wǎng)站平臺(tái)都有哪些
  • 垂直類b2c網(wǎng)站北京網(wǎng)優(yōu)化seo優(yōu)化公司
  • 網(wǎng)站 域名綁定google中文搜索引擎
  • 東莞網(wǎng)站排名優(yōu)化seoapp軟件推廣怎么做
  • 新鄉(xiāng)專業(yè)網(wǎng)站建設(shè)公司地推團(tuán)隊(duì)如何收費(fèi)
  • wordpress禁止評(píng)論優(yōu)化品牌seo關(guān)鍵詞
  • 如今做哪些網(wǎng)站致富百度站長(zhǎng)工具官網(wǎng)
  • 騰訊云服務(wù)器可以做傳奇網(wǎng)站嗎我想在百度上做廣告怎么做
  • 滄浪企業(yè)建設(shè)網(wǎng)站價(jià)格營(yíng)銷軟文范例大全100
  • 建設(shè)銀行網(wǎng)站怎么短信轉(zhuǎn)賬關(guān)鍵詞權(quán)重如何打造
  • 營(yíng)銷型網(wǎng)站建設(shè)極速建站seo推廣軟件排行榜前十名
  • 戶縣規(guī)劃建設(shè)和住房保障局網(wǎng)站沙坪壩區(qū)優(yōu)化關(guān)鍵詞軟件
  • wordpress還是hexo青島seo關(guān)鍵詞優(yōu)化公司
  • 建設(shè)一個(gè)網(wǎng)站app全過程seo權(quán)威入門教程
  • 自己做的網(wǎng)站涉黃網(wǎng)站怎么推廣
  • 成交型網(wǎng)站倡導(dǎo)公司西安百度網(wǎng)站快速排名
  • 成都網(wǎng)站建設(shè)是什么百度店面定位怎么申請(qǐng)
  • 阿里媽媽新建網(wǎng)站怎么做百度客服投訴中心
  • 嘉峪關(guān)市建設(shè)局建管科網(wǎng)站外鏈價(jià)格
  • 查看網(wǎng)站有沒有備案全國(guó)疫情防控最新數(shù)據(jù)
  • 手機(jī)上做整蠱網(wǎng)站全網(wǎng)推廣軟件
  • 農(nóng)產(chǎn)品網(wǎng)站開發(fā) 文獻(xiàn)綜述seo外包公司興田德潤(rùn)官方地址
  • 網(wǎng)站制作技巧百度競(jìng)價(jià)怎么做開戶需要多少錢
  • 找做網(wǎng)站的朋友抖音流量推廣神器軟件
  • 中山商城型網(wǎng)站建設(shè)廣州網(wǎng)站優(yōu)化方式
  • 海報(bào)設(shè)計(jì)分析網(wǎng)站seo的內(nèi)容是什么
  • wordpress c博客seo實(shí)戰(zhàn)密碼第三版pdf下載
  • 有哪些網(wǎng)站做汽車周邊服務(wù)一句簡(jiǎn)短走心文案
  • wordpress可以建官網(wǎng)嘛搜索引擎優(yōu)化排名
  • 新鄉(xiāng)網(wǎng)站建設(shè)百度推廣搜索排名