單例模式(懶漢,餓漢)
阿新 • • 發佈:2017-10-28
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); } }
單例模式(懶漢,餓漢)