線程(6)--單例設計模式及其應用

單例設計模式

保證類在內存中只有一個對象。

實現思想:

(1)控制類的創建,不讓其他類來創建本類的對象。private
(2)在本類中定義一個本類的對象。Singleton s;
(3)提供公共的訪問方式。  public static Singleton getMethod(){return s}

兩種實現方式:

 1.餓漢式(開發):
 2.懶漢式(面試):單例的延遲加載模式。
 3.區別:
    (1)餓漢式:省時間,費內存;懶漢式:費時間,省內存;
    (2)在多線程訪問時,餓漢式不會創建多個對象,而懶漢式可能會創建多個對象。
package com.fenqing.Thread;

public class d01_singleton {

    public static void main(String[] args) {
        singleton1 s1=singleton1.getMethod1();      //4.創建對象訪問
        singleton1 s2=singleton1.getMethod1();

        singleton2 s3=singleton2.getMethod2();      //4
        singleton2 s4=singleton2.getMethod2();

        System.out.println(s1==s2);                 //5.判斷其是否爲同一地址,返回true或false

        System.out.println(s3==s4);                 //5
    }

}
class singleton1{                                   // 餓漢式
    private singleton1(){
                                                    //1.創建私有構造方法
    }
    private static singleton1 s=new singleton1();   //2.創建私有、靜態的本類對象,或是public static final singleton1 s=new singleton1();
    public static singleton1 getMethod1(){
        return s;                                   //3.創建公有、靜態的,訪問對象的方法,以便其他類訪問
    }
}
class singleton2{                                   // 懶漢式
    private singleton2(){
                                                    //1.創建私有構造
    }
    private static singleton2 s;                    //2.創建本類對象
    public static singleton2 getMethod2(){
        if(s==null){                                //3.創建訪問方法,並判斷是否爲空
            s=new singleton2();                     
        }
        return s;
    }
}
發佈了77 篇原創文章 · 獲贊 17 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章