1. 程式人生 > >單例模式(懶漢,餓漢)

單例模式(懶漢,餓漢)

ati turn 還需 sin 有用 只需要 對象 clas main

Java中的單例模式一般分為懶漢模式和餓漢模式,懶漢模式只有用得到的時候對象才初始化,餓漢模式無論用得到與否,都先初始化。

懶漢模式在運行的時候獲取對象比較慢(因為類加載時並沒有創建對象實例),但是加載類的時候比較快(因為此時不創建對象實例),餓漢模式是在運行的時候獲取對象快(因為加載類時就創建了實例對象),加載類的時候慢(此時還需要創建實例對象)。

單例模式的應用場合,有些對象只需要一個的時候。

作用:保證整個應用程序中某個實例有且只有一個。

餓漢模式:

class SingletonDemo{
    /**
    *單例餓漢模式
    */

    //在單例類的內部聲明一個自己本身的對象,並且初始化
private static SingletonDemo s = new SingletonDemo(); //私有化構造器 private SingletonDemo(){ } //獲得單例的對象,必須static,不然無法調用該方法 public static SingletonDemo getSingletonDemo(){ return s; } public void eat(){ System.out.println("在吃飯"); } }
class TestSingletonDemo{ public static void main(String[] args){ //使用類名調用get方法得到在單例類內部所創建的對象 /**使用類名時要確保get方法是static類方法,才可以使用類名調用方法, *使用類名調用方法,那就要調用類屬性,也要是static修飾的屬性 */ SingletonDemo s1 = SingletonDemo.getSingletonDemo(); s1.eat(); System.out.println(s1); SingletonDemo s2
= SingletonDemo.getSingletonDemo(); s2.eat(); System.out.println(s2); SingletonDemo s3 = SingletonDemo.getSingletonDemo(); s3.eat(); System.out.println(s3); } }

單例懶漢模式:

class Singleton{
    /**
    *懶漢模式
    */
    //將構造方法私有化,不允許外面直接創建對象
     private Singleton(){
         }
    //聲明類的唯一對象,使用private static
    private static Singleton s;
    //給外部提供一個可以獲得對象的方法,使用public static
    public static Singleton getSingleton(){
        if(s == null){
            s = new Singleton();
            }
        return s;
        }
}


class TestSingle{
    public static void main(String [] args){
        Singleton s = Singleton.getSingleton();
        System.out.println(s);
        
        
        Singleton s1 = Singleton.getSingleton();
        System.out.println(s1);
        
        
        Singleton s2 = Singleton.getSingleton();
        System.out.println(s2);
        
        
    }
    
}

單例模式(懶漢,餓漢)