單例設計模式:保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。
要實現單例,需要:
1、構造方法私有化
2、宣告乙個本類物件
3、給外部提供乙個靜態方法獲取物件例項
兩種實現方式:
1、餓漢式
2、懶漢式
餓漢式:
public
class
demo1
}//餓漢式
class
singleton1
private
static singleton1 s =
newsingleton1()
;//直接new乙個物件
public
static singleton1 getinstance()
public
void
print()
}
輸出結果:
測試方法
測試方法
true
懶漢式:
public
class
demo2
}//懶漢式
class
singleton2
private
static singleton2 s;
public
static singleton2 getinstance()
return s;
}public
void
print()
}
輸出結果:
測試方法2
測試方法2
true
對比:
懶漢式:在第一次呼叫getinstance
方法時,物件被建立,到程式結束後釋放。占用記憶體的時間相對短,效率相對低。
餓漢式:在類被載入後,物件被建立,到程式結束後釋放。占用記憶體的時間相對長,效率相對高。
建議用懶漢式。
在專案中為什麼要使用單例,單例有什麼好處?
在設計一些工具類的時候使用(通常工具類只有功能和方法,沒有屬性),因為工具類可能會被頻繁呼叫。能節省重複建立物件所帶來的記憶體消耗,從而提高效率。
//使用構造方法私有化 + 靜態方法來實現工具類,比如 math
class
tools
public
static
void
print1()
public
static
void
print2()
}
java之單例設計模式
單例設計模式 乙個類有且僅有乙個例項,而且自行例項化然後提供給其他類。單例設計模式分為兩類 餓漢式和飽漢式。餓漢式指的是在類載入時建立。懶漢式指的是在使用的時候進行判斷,如果需要再建立。餓漢式的 如下 public class singlepattern public static singlepa...
java設計模式之單例
單例模式與工具類 提到單例設計模式就不得不提工具類了,在網上有許多關於它們的說法,在這裡我說說自己的看法,從核心的角度來說,單例工具類的區別在於 1.1 單例的思想特點 2 餓漢式 public class singleton 在類載入的時候,建立乙個靜態的物件,乙個類只會載入一次 private ...
Java 設計模式之單例
單例模式又名單子模式。是一種非常常見的設計模式。我們在運用這模式的時候,基本是為了確保整個系統中只有乙個例項。避免頻繁的建立銷毀物件,可以提高效能 避免對共享資源的多重占用,簡化訪問 為整個系統提供乙個全域性訪問點。1 餓汗式 餓漢式單例 public class singleton1 獲取單例 p...