第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

模式的秘密---單例模式

難度中級
時(shí)長30分
學(xué)習(xí)人數(shù)
綜合評分9.63
276人評價(jià) 查看評價(jià)
9.8 內(nèi)容實(shí)用
9.6 簡潔易懂
9.5 邏輯清晰
    • 設(shè)計(jì)模式——單例模式

    一、介紹? ??

    設(shè)計(jì)模式更多的是思想層面,是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。使用設(shè)計(jì)模式是為了使代碼高可用,易于他人理解以及保證代碼的可靠性。

    ????設(shè)計(jì)模式有23中:單例模式、抽象工廠模式、工廠模式、建造者模式、原型模式等。

    ????單例模式(使用單例模式就是為了保證整個(gè)應(yīng)用中某個(gè)實(shí)例有且只有一個(gè)):

    ???????? 在程序開發(fā)中,有些對象只需要一個(gè),比如:配置文件、工具類、線程池、緩存、日志對象等;如果創(chuàng)建多個(gè)對象,會導(dǎo)致很多問題,比如資源占用,結(jié)果不一致等等。

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

    單例模式(Singleton):

    ????餓漢模式(靜態(tài)成員屬類所有,加載類時(shí),就會創(chuàng)建類的唯一實(shí)例,不管用戶是否使用這個(gè)實(shí)例,它已經(jīng)被加載,形象的稱之為“餓漢模式”):

    public?class?Singleton{
    //默認(rèn)的構(gòu)造方法在創(chuàng)建對象時(shí)被調(diào)用;多次new則創(chuàng)建多個(gè)類對象
    ???//1、私有化構(gòu)造方法(外部無法直接通過構(gòu)造方法創(chuàng)建實(shí)例,避免創(chuàng)建多個(gè)實(shí)例)
    ???private?Singleton(){}
    ???//2、保證實(shí)例只有一個(gè),自己創(chuàng)建實(shí)例(創(chuàng)建類的唯一實(shí)例,使用private?static修飾類的靜態(tài)成員)
    ???//因外部類無法直接使用對象.成員方法(),所以使用static靜態(tài)修飾對象,用類名.成員名創(chuàng)建實(shí)例
    ???//為了控制訪問、安全,加private不允許外部訪問成員變量,不能使用類名.成員名創(chuàng)建實(shí)例
    ???private?static?Singleton?instance?=?new?Singleton();
    ???//3、提供一個(gè)用于獲取實(shí)例的方法(屬于對象方法,不用static修飾的話無法用類名.方法創(chuàng)建實(shí)例)
    ???/*public?Singleton?getInstance(){
    ???????return?instance;
    ???}*/
    ???//使用public?static修飾類方法
    ???public?static?Singleton?getInstance(){
    ???????return?instance;
    ???}
    }
    public?class?Test{
    ???public?static?void?main(String[]?args){
    ???????//私有化構(gòu)造方法后,外部類無法直接創(chuàng)建實(shí)例
    ???????
    ???????/*Singleton?s1?=?Singleton.instance;//調(diào)用靜態(tài)成員創(chuàng)建實(shí)例
    ???????Singleton?s2?=?Singleton.instance;//調(diào)用靜態(tài)成員創(chuàng)建實(shí)例
    ???????if(s1==s2){//true??保證創(chuàng)建的Singleton對象是單個(gè)實(shí)例
    ???????????System.out.println("s1和s2是同一個(gè)實(shí)例");
    ???????}else{
    ???????????System.out.println("s1和s2不是同一個(gè)實(shí)例");
    ???????}*/
    ???????//調(diào)用失敗,方法是對象方法(沒有用static修飾的方法)
    ???????/*Singleton?s1?=?Singleton.getInstance();*/
    ???????Singleton?s1?=?Singleton.getInstance();
    ???????Singleton?s2?=?Singleton.getInstance();
    ???????if(s1==s2){//true??保證創(chuàng)建的Singleton對象是單個(gè)實(shí)例
    ???????????System.out.println("s1和s2是同一個(gè)實(shí)例");
    ???????}else{
    ???????????System.out.println("s1和s2不是同一個(gè)實(shí)例");
    ???????}
    ???}
    }

    ????懶漢模式(類加載時(shí)不創(chuàng)建唯一實(shí)例,當(dāng)?shù)谝粋€(gè)用戶獲取時(shí)判斷實(shí)例為空時(shí)時(shí)創(chuàng)建,之后所有用戶獲取已經(jīng)存在的實(shí)例將不再創(chuàng)建):

    public?class?Singleton2{
    ???//1、私有化構(gòu)造方法,不允許外部直接通過構(gòu)造方法創(chuàng)建對象
    ???private?Singleton2(){}
    ???//2、聲明類的唯一實(shí)例,使用private?static?修飾
    ???private?static?Singleton2?instance?;
    ???//3、提供一個(gè)用于獲取實(shí)例的方法,使用public?static修飾
    ???public?static?Singleton2?getInstance(){
    ???????if(instance?==?null){
    ???????????instance?=?new?Singleton2();
    ???????}
    ???????return?instance;
    ???}
    }
    public?class?Test{
    ???public?static?void?main(String[]?args){
    ???????Singleton2?s3?=?Singleton2.getInstance();
    ???????Singleton2?s4?=?Singleton2.getInstance();
    ???????if(s3==s4){//true??保證創(chuàng)建的Singleton對象是單個(gè)實(shí)例
    ???????????System.out.println("s3和s4是同一個(gè)實(shí)例");
    ???????}else{
    ???????????System.out.println("s3和s4不是同一個(gè)實(shí)例");
    ???????}
    ???}

    ?三、區(qū)別

    ????????餓漢模式加載類時(shí)比較慢,運(yùn)行時(shí)獲取對象速度比較快,線程安全;

    ????????懶漢模式加載類時(shí)比較快(加載類時(shí)沒有創(chuàng)建類的對象),但運(yùn)行時(shí)獲取對象速度比較慢(用戶第一次獲取對象時(shí)由于類還沒有被創(chuàng)建,需要?jiǎng)?chuàng)建對象的一個(gè)過程),線程不安全。

    查看全部
    0 采集 收起 來源:單例模式簡介

    2022-03-30

  • 單例模式六種實(shí)現(xiàn)方式
    查看全部
  • 聲明實(shí)例和實(shí)例化 兩種模式區(qū)別在實(shí)例化的地方不一樣
    查看全部
  • 對象方法和類方法: 類方法前加static,歸類所有,其他類可以直接調(diào)用該方法
    查看全部
  • static 類的
    查看全部
  • 設(shè)計(jì)模式,單例模式 筆記 1,設(shè)計(jì)模式的定義。 用你的人多了,一種反復(fù)使用的,多數(shù)人知曉的,方法的總結(jié)。 2 餓漢模式 1)控制不可以被外部直接實(shí)例化對象,使用private修飾構(gòu)造函數(shù)。 2)私有化構(gòu)造函數(shù)后,外部無法創(chuàng)建實(shí)例化對象,所以要實(shí)現(xiàn)唯一實(shí)例對象,通過類對象實(shí)現(xiàn)。 單純的在類里實(shí)例化一個(gè)對象,該對象作為類成員,需要外部通過對象加點(diǎn)去獲取,但是外部沒有對象,就要通過添加static去將這個(gè)唯一實(shí)例化對象變成類的成員變量,通過類名的方式去獲取該對象。 3)為了安全考慮,不允許外部直接訪問類成員變量,給變量添加private修飾,此時(shí),外部不可以通過類名直接訪問這個(gè)對象。 再添加一個(gè)public訪問函數(shù),同理,只添加public為類的對象,無法外部直接使用。所以添加static修飾,變?yōu)轭惙椒ā?4)該方法,加載類的時(shí)候直接實(shí)例化一個(gè)對象,所以加載較慢,但是調(diào)用較快 3 懶漢模式 加載的時(shí)候不實(shí)例化,第一次調(diào)用的時(shí)候?qū)嵗?。所以加載較快,使用較慢。 4 餓漢模式,線程安全 懶漢模式,線程不安全
    查看全部
  • 懶漢模式
    查看全部
  • Singleton

    查看全部
  • Singleton 懶漢式

    查看全部
  • Singleton 餓漢式

    查看全部
  • 配置文件/工具類/線程池/緩存/日志對象等

    查看全部
    0 采集 收起 來源:單例模式簡介

    2020-07-25

  • Design Pattern

    查看全部
    0 采集 收起 來源:單例模式簡介

    2020-07-25

  • 單例模式只有一個(gè)實(shí)例 餓漢模式 私有構(gòu)造方法 初始化實(shí)例private static 獲取實(shí)例方法public static 加載類時(shí)創(chuàng)建實(shí)例 所以慢 線程安全 懶漢模式 私有構(gòu)造方法 聲明實(shí)例private static 獲取實(shí)例方法public static里判斷實(shí)例是否為空 空初始化實(shí)例 不空返回實(shí)例 加載類時(shí)只聲明實(shí)例 所以快 用戶獲取實(shí)例時(shí)判斷是否為空 為空初始化實(shí)例 否則返回實(shí)例 線程不安全
    查看全部
    0 采集 收起 來源:單例模式簡介

    2020-03-17

  • Gh
    查看全部
  • 1.設(shè)計(jì)模式:是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。 2.單例模式: 2.1應(yīng)用場景:有些對象我們只需要一個(gè),eg:皇帝、老婆 2.2作用:保證整個(gè)應(yīng)用中某個(gè)實(shí)例有且只有一個(gè) 2.3類型以及實(shí)現(xiàn) 2.3.1餓漢模式 ①構(gòu)造方法私有化,private,不允許外部直接創(chuàng)建對象 ②創(chuàng)建類的唯一實(shí)例,使用private static修飾,類加載時(shí)就創(chuàng)建了,所以加載速度較慢。 ③提供一個(gè)用于獲取實(shí)例的使用public static修飾的方法,直接返回該實(shí)例,所以運(yùn)行時(shí)獲取對象的速度比較快。 2.3.2懶漢模式 ①同餓漢 ②聲明類的實(shí)例,使用private static修飾,但不對其進(jìn)行實(shí)例化,類加載時(shí)不進(jìn)行創(chuàng)建 ③同餓漢,但是會在首次調(diào)用該方法時(shí)實(shí)例化聲明的類的實(shí)例,在之后的調(diào)用中返回該實(shí)例化對象。 3.區(qū)別 餓漢模式 加載類的速度較慢,運(yùn)行時(shí)獲取對象的速度較快,同時(shí)是線程安全的 懶漢模式 加載類的速度較快,運(yùn)行時(shí)第一次獲取對象的速度較慢,線程不安全,需要加鎖?
    查看全部
首頁上一頁1234567下一頁尾頁

舉報(bào)

0/150
提交
取消
課程須知
本課程是 Java 開發(fā)課程的高級課程,如果您是新手,建議先移步 《Java入門第一季》和《Java入門第二季》
老師告訴你能學(xué)到什么?
1、 了解設(shè)計(jì)模式 2、 理解單例模式的含義及應(yīng)用場合 3、 掌握單例模式中餓漢模式和懶漢模式的使用 4、 理解兩種模式的區(qū)別

微信掃碼,參與3人拼團(tuán)

微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復(fù)購買,感謝您對慕課網(wǎng)的支持!