Posted on 2008-12-20 18:12
魚躍于淵 閱讀(256)
評論(0) 編輯 收藏 所屬分類:
設計模式
1 package com.givetop.singleton;
2
3 public class singleton {
4
5
6 public static void main(String[] args) {
7 Single.getSingleton().say();
8 }
9
10 }
11
12 class Single{
13 private static Single s = new Single();
14 public static Single getSingleton(){
15 return Single.s;
16 }
17 private Single(){
18
19 }
20 public void say(){
21 System.out.println("我開始說話了!");
22 }
23 }
24
//思想是: 所謂單例就是只有一個實例存在(把類的構造方法設為私有的,防止在類的外面new類的實例), 這樣減少了內存的占有量, 而且還減輕了垃圾回收機制的負擔!
下面看幾個設計的不好的例子!
一.直接在類的內部設一個靜態的該類的類型!
1 package com.givetop.singleton;
2
3 public class singleton {
4
5
6 public static void main(String[] args) {
7 Single.s.say();
8 }
9
10 }
11
12 class Single{
13 static Single s = new Single();
14 private Single(){
15
16 }
17 public void say(){
18 System.out.println("我開始說話了!");
19 }
20 }
該類雖然實現了只能new一個實例但 s 屬性是default的, 破壞了類的封裝, 算不上是好的類的設計!
好的方法是應該把該屬性設為私有的, 然后在類里面提供一個公有的方法返回這個實例