設計模式 一 單例模式

2021-08-06 02:39:08 字數 2551 閱讀 3567

思路:

1、如果其他程式能夠隨意用new建立該類物件,那麼就無法控制個數。因此,不讓其他程式用new建立該類的物件。

2、既然不讓其他程式new該類物件,那麼該類在自己內部就要建立乙個物件,否則該類就永遠無法建立物件了。

3、該類將建立的物件對外(整個系統)提供,讓其他程式獲取並使用。

步驟:1、 將該類中的建構函式私有化。

2、在本類中建立乙個本類物件。

3、定義乙個方法,返回值型別是本類型別。讓其他程式通過該方法就可以獲取到該類物件。

第一種方法:

//餓漢式

public class single

/*** 外部通過呼叫這個函式來拿到物件

* @return single物件s

*/public static single getinstance()

}

測試**如下:

/**

* 此時若位址一樣,則拿的是同一物件

*/@test

public void t1()

測試結果如下:

singelmodel.pattern.singleton.single@50c931fc

singelmodel.pattern.singleton.single@50c931fc

第二種方法:

public class single2 

public static single2 getinstance()

return s;

}

}

測試**如下:

@test

public void t2()

/*** 一起啟動執行緒

*/for (int i = 0; i < ts.length; i++)

} class usesingle2 extends thread catch (interruptedexception e)

single2 s = single2.getinstance();

system.out.println(s);

}

測試結果如下:

singelmodel.pattern.singleton.single2@2d342ba4

singelmodel.pattern.singleton.single2@2d342ba4

singelmodel.pattern.singleton.single2@2d342ba4

singelmodel.pattern.singleton.single2@2d342ba4

singelmodel.pattern.singleton.single2@2d342ba4

singelmodel.pattern.singleton.single2@2d342ba4

singelmodel.pattern.singleton.single2@2d342ba4

singelmodel.pattern.singleton.single2@2d342ba4

singelmodel.pattern.singleton.single2@2d342ba4

singelmodel.pattern.singleton.single2@2d342ba4

singelmodel.pattern.singleton.single2@2d342ba4

singelmodel.pattern.singleton.single2@2d342ba4

singelmodel.pattern.singleton.single2@488e32e7 ******

singelmodel.pattern.singleton.single2@2d342ba4

singelmodel.pattern.singleton.single2@2d342ba4

第三種方法:是借用了單例的思想,

/**

* 這裡是單例的第三種模式,可以再single3中隨便new ,

* 但是卻只能拿到a類中的同乙個物件

* @author administrator

* */

public class single3

}

public class a 

public void setx(int x)

}

@test

public void t3()

結果如下:singelmodel.pattern.singleton.a@3603820e

singelmodel.pattern.singleton.a@3603820e

singelmodel.pattern.singleton.a@3603820e

設計模式(一) 單例模式

這種模式只涉及到乙個單一的類,該類負責建立自己的物件,並確保只建立乙個物件。單例只有乙個例項 單例類必須建立自己唯一的例項 單例類必須給其他物件提供這唯一的例項 由於當今的程式設計模型都是基於多執行緒方式,因此此處只介紹執行緒安全的幾種實現。第一次被呼叫時才建立物件,屬於懶載入 lazy init ...

設計模式(一) 單例模式

單例模式 保證執行記憶體中只有乙個實體的實現模式就是單例模式,最常見的有餓漢模式 懶漢模式兩種。餓漢模式 package com.madg.design.singleton public class hungry public hungry getinstance 懶漢模式 package com....

設計模式(一) 單例模式

小結確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。確保某個類有且只有乙個物件的場景,避免產生多個物件消耗過多的資源。例如 建立乙個物件需要消耗的資源過多,比如io操作 資料庫操作等,這時就要考慮使用單例模式。public class ehansingleton public st...