餓漢式單例
com.cleversoft.designpatterns.singleton1.Singleton.java:
package?com.cleversoft.designpatterns.singleton1;


/**?*//**
?*?Hungry?Singleton
?*?
?*/

public?class?Singleton?
{

????private?static?Singleton?singleton?=?new?Singleton();


????private?Singleton()?
{
????}


????public?static?Singleton?getInstance()?
{
????????return?singleton;
????}


????public?String?demoMethod()?
{
????????return?"This?is?a?hungry?singleton?demo!";
????}
}
com.cleversoft.designpatterns.singleton1.Main.java:
package?com.cleversoft.designpatterns.singleton1;


public?class?Main?
{


????/**?*//**
?????*?@param?args
?????*/

????public?static?void?main(String[]?args)?
{
????????//?TODO?Auto-generated?method?stub
????????System.out.println(Singleton.getInstance().demoMethod());
????}

}
懶漢式單例
com.cleversoft.designpatterns.singleton2.LazySingleton.java:
package?com.cleversoft.designpatterns.singleton2;


/**?*//**
?*?Lazy?Singleton
?*?
?*/

public?class?LazySingleton?
{
????static?boolean?instance_flag?=?false;


????private?LazySingleton()?
{
????}


????synchronized?public?static?LazySingleton?getInstance()?
{

????????if?(!instance_flag)?
{
????????????instance_flag?=?true;
????????????return?new?LazySingleton();
????????}?else
????????????return?null;
????}

}
com.cleversoft.designpatterns.singleton2.Main.java:
package?com.cleversoft.designpatterns.singleton2;


public?class?Main?
{


????/**?*//**
?????*?@param?args
?????*/

????public?static?void?main(String[]?args)?
{
????????//?TODO?Auto-generated?method?stub
????????LazySingleton?ls1,?ls2;
????????System.out.println("Start?to?get?first?Instance
");
????????ls1?=?LazySingleton.getInstance();

????????if?(ls1?!=?null)
{
????????????System.out.println("This?is?the?first?Instance!\n");
????????}
????????
????????System.out.println("Start?to?get?second?Instance
");
????????ls2?=?LazySingleton.getInstance();

????????if?(ls2?!=?null)
{
????????????System.out.println("This?is?the?second?Instance!");
????????}

????????else
{????????????
????????????System.out.println("You?can?just?get?1?Instance!");
????????}
????????
????}

}
引用:
?>強烈建議大家不要再花時間在實現雙重檢查成例上
是這樣,不必在這上面鉆牛角尖,而且單例模式在實際應用中已經逐步被Ioc容器替代,實用價值不高。(banq)
(http://www.jdon.com/jive/thread.jsp?forum=91&thread=23890)
參考資料:
1. 《Java與模式》
2. http://www.java2s.com
com.cleversoft.designpatterns.singleton1.Singleton.java:






























com.cleversoft.designpatterns.singleton1.Main.java:


















懶漢式單例
com.cleversoft.designpatterns.singleton2.LazySingleton.java:






























com.cleversoft.designpatterns.singleton2.Main.java:









































引用:
?>強烈建議大家不要再花時間在實現雙重檢查成例上
是這樣,不必在這上面鉆牛角尖,而且單例模式在實際應用中已經逐步被Ioc容器替代,實用價值不高。(banq)
(http://www.jdon.com/jive/thread.jsp?forum=91&thread=23890)
參考資料:
1. 《Java與模式》
2. http://www.java2s.com
|
|
歡迎大家訪問我的個人網站 萌萌的IT人