天天看點

java的知識點30——設計模式

java的知識點30——設計模式

 單例模式

核心作用:保證一個類隻有一個執行個體,并且提供一個通路該執行個體的全局通路點

單例模式的優點:由于單例模式隻生成一個執行個體,減少了系統性能開銷,當一個對象的産生需要比較多的資源時,如讀取配置、産生其他依賴對象時,則可以通過在應用啟動時直接産生一個單例對象,然後永久駐留記憶體的方式來解決

常見的五種單例模式實作方式:• 餓漢式(線程安全,調用效率高。 但是,不能延時加載。)

                                                  • 懶漢式(線程安全,調用效率不高。 但是,可以延時加載。)

餓漢式

package cn.dym;
/**
 * 測試餓漢式單例模式
 * @author Administrator
 *
 */
public class SingletonDemo01 {
	//類初始化時,立即加載這個對象 (沒有延時加載的優勢) // 加載類時,天然的是線程安全
	private static SingletonDemo01 instance=new SingletonDemo01();  
	private SingletonDemo01() {
		
	}
	//方法沒有同步,調用效率高
	public static SingletonDemo01 getInstance() {
		return instance;
	}
}
           

懶漢式:資源使用率高了。但是,每次調用getInstance()方法都要同步,并發效率較低

package cn.dym;
/**
 * 測試懶漢式單例模式
 * @author Administrator
 *
 */
public class SingletonDemo02 {
	//類初始化時,不初始化這個對象 (延時加載,真正用的時候在建立)
	private static SingletonDemo02 instance;  
	private SingletonDemo02() { //私有化構造器
		
	}
	//方法同步,調用效率低
	public static synchronized SingletonDemo02 getInstance() {
		if(instance==null) {
			instance=new SingletonDemo02();
		}
		return instance;
	}
}