文章出處

直接上代碼:

 1 public enum Boss {
 2 
 3     INSTANCE;
 4 
 5     private String name;
 6 
 7     public void doSomeThing() {
 8         System.out.println(name + " is doing something now...");
 9     }
10 
11     public String getName() {
12         return name;
13     }
14 
15     public void setName(String name) {
16         this.name = name;
17     }
18 
19 }

注:java中的enum是一個徹徹底底的class,可以自由添加其它屬性、方法,所以完全可以當成一個class來用。

 

驗證:

 1     @Test
 2     public void testSingleton() {
 3 
 4         Boss b1 = Boss.INSTANCE;
 5         b1.setName("張三");
 6         b1.doSomeThing();//張三 is doing something now...
 7 
 8         Boss b2 = Boss.INSTANCE;
 9         b2.doSomeThing();//張三 is doing something now...
10 
11         System.out.println(b1.equals(b2));//true
12 
13     }

11行輸出的true,已經證明了b1與b2是同一個對象,而且這種方式絕對防止反射調用私有構造器來破壞單例。


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()