理解JAVA中的單例模式
歡迎加入我的qq群1543150073獲得更多加瓦和職場資訊。我幫你。
單例模式簡單說就是:同一個對象,不用去new多個對象。減少記憶體消耗。
&對於JAVA中的設計模式,看到介紹的大概有23種設計模式之多。象原廠模式,Factory 方法模式,單例模式,外觀(Facade)模式,觀察者Observer模式,橋接(Bridge)模式都是比較常用的,不同的項目有不同的設計方向,可以參考的設計模式也不盡相同,沒有定數,只是上面這幾個模式用的比較多一些.cade)模式,觀察者Observer模
設計模式的好處,就是提供了一種通用的解決問題的好方法,減少重複勞動,提高開發效率。
下面,阿堂今天就來說說其中的“單例模式”,其實,它在實際項目的開發中,它還是用得較多的 &
單例模式,就是在整個應用程式啟動並執行過程中,使用單例模式的類只需要執行個體化一次(new一次),始終是同一個對象(執行個體),這樣就減少了記憶體的開銷,提高了開發效率,象一般的公用類,如讀取一個設定檔的類,一個包含程式中其它類要調用所有公用見常量的類,等等,我們都可以定義一個“單例模式”的類,下面阿堂就來舉個例來測試一下,相信,朋友們看到阿堂下面所舉的例和總結,應該就清楚了。
到介紹的大概有23種設計模式之多。象工廠代碼如下
nbsp;對於JAVA中的設計模式,看//下面是一個單例模式的類
public class MySingleton
{ 到介紹的大概有23種設計模式之多。象工廠
privatestatic final MySingleton INSTANCE= new MySingleton();
privateMySingleton()cade)模式,觀察者Observer模
{
}
publicstatic 到介紹的大概有23種設計模式之多。象工廠final MySingleton getInstance(){
return INSTANCE;
} &
}
//下面一個不是單例模式的類cade)模式,觀察者Observer模
public class NoSingleton
{
public NoSingleton()模式,Factory 方法模式,單例模式,外觀(Fa
{}
private int id;
private String name;模式,Factory 方法模式,單例模式,外觀(Fa
public int getId() {
return id;
}cade)模式,觀察者Observer模
public void setId(int id) {
this.id = id;
}cade)模式,觀察者Observer模
public String getName() {
return name;
}到介紹的大概有23種設計模式之多。象工廠
public void setName(String name) {
this.name = name;
} nbsp;對於JAVA中的設計模式,看
......
}
到介紹的大概有23種設計模式之多。象工廠
測試類別 到介紹的大概有23種設計模式之多。象工廠
public class TestSingleton
{
nbsp;對於JAVA中的設計模式,看 //Date200810301627
//authtor 網路時空
cade)模式,觀察者Observer模
public static void main(String[] args)
{
模式,Factory 方法模式,單例模式,外觀(Fa System.out.println("========================================");
System.out.println("下面是使用單例模式,來調用類的執行個體");
System.out.println("========================================"); nbsp;對於JAVA中的設計模式,看
for(inti=0;i<6;i++)
{
intm=i+1;到介紹的大概有23種設計模式之多。象工廠
System.out.println("第 "+m+" 次"+"得到的對象值為"+MySingleton.getInstance());
}
cade)模式,觀察者Observer模 System.out.println("========================================");
System.out.println("下面是不使用單例模式,來調用類的執行個體");
System.out.println("========================================"); nbsp;對於JAVA中的設計模式,看
for(inti=0;i<6;i++)
{
int n=i+1;模式,Factory 方法模式,單例模式,外觀(Fa
NoSingleton noSingletion=new NoSingleton();
System.out.println("第 "+n+" 次"+"得到的對象值為"+noSingletion);
}到介紹的大概有23種設計模式之多。象工廠
}
}
nbsp;對於JAVA中的設計模式,看
測試結果:
cade)模式,觀察者Observer模花1分鐘看看">
nbsp;對於JAVA中的設計模式,看
根據結果,阿堂總結如下
到介紹的大概有23種設計模式之多。象工廠1.通過單例模式設計的類MySingleton,定義了一個private的構造方法,一個staticfinal類型的常量INSTANCE,其值就是返回一個MySingleton的執行個體,然後再定義一個getInstance()的靜態方法來返回一個INSTANCE,而這個值就是一個不變的執行個體或值,也就是第一次newMySingleton()產生的對象,所以測試類別中,迴圈6次中,我們列印得到的始終是同一個對象,這就充分驗正了,單例模式,只new了一次(執行個體化了一次),減少了在堆中開闢記憶體空間的開銷 nbsp;對於JAVA中的設計模式,看
&2.沒有用單例模式的類,我們在測試類別中,迴圈6次中,我們列印得到的始終是不同對象,這就說,我們在堆記憶體中new了六次,產生了6個對象,很顯示,這是需要佔用記憶體資源,影響運行效率的
nbsp;對於JAVA中的設計模式,看3.對於上單例模式的類中,在測試中,阿堂去掉了final終態類型的限制,迴圈6次中,我們列印得到的始終是同一個對象,這裡說明了final在此處可有可無,那為什麼還要加上final呢。
nbsp;對於JAVA中的設計模式,看這裡使用final是為了更安全,保證你這個類的其他方法、其他代碼不能對