JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Software Design  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 Singleton vs. 靜態類別有什麼差別
jamiecom





發文: 84
積分: 0
於 2004-04-27 10:59 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
針對以下兩個類別的getName()方法, 使用Singleton和靜態類別有什麼分別?
難道靜態類別不是唯一instance嗎?

==============================
Singleton Pattern 如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Singleton {
  private static Singleton obj = new Singleton(); 
  private static String name;
  private Singleton() {
  }
  public Singleton getInstance() {
    return obj;
  }
  public String getName() {
    name = "JavaWorld";
    return name;
  }
}
public static void main(String[] args) {
  Singleton obj = Singleton.getInstance();
  String s = obj.getName();
}


靜態類別如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Singleton {
  private static Singleton obj = new Singleton(); 
  private static String name;
  private Singleton() {
  }
  public static String getName() {
    name = "JavaWorld";
    return name;
  }
}
 
public static void main(String[] args) {
  String s = Singleton.getName();
}


jamiecom edited on 2004-04-27 11:09
reply to postreply to post
作者 Re:Singleton vs. 靜態類別有什麼差別 [Re:jamiecom]
arthuroy





發文: 106
積分: 3
於 2004-04-27 12:13 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
靜態類別一般來說會用在一些 utilities method (例如 Math) 上面,比較不建議有 attribute members 的出現。單單看你的實作,的確兩種寫法差不多;我想你應該先看看 singleton 的應用實例,就會了解有什麼差異性了。

reply to postreply to post
Self-Pity

I never saw a wild thing sorry for itself.
A small bird will drop frozen dead from a bough
without ever having felt sorry for itself.
作者 Re:Singleton vs. 靜態類別有什麼差別 [Re:jamiecom]
try





發文: 128
積分: 6
於 2004-05-14 00:54 user profilesend a private message to usersend email to tryreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
hi,

個人認為二個方式都算是實現Singleton Pattern的手段。

-try


reply to postreply to post
個人網站 - http://cfliao.net/
作者 Re:Singleton vs. 靜態類別有什麼差別 [Re:jamiecom]
ispot





發文: 14
積分: 0
於 2004-06-14 10:11 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
其中最主要的差別在於
Singleton允許你以簡單的方式更換實作,例如你以一個singleton來實作
一個近端(local)的管理員類別(manager),但稍後發現需要以遠端的方式重新實作, 你只需要再新增一個遠端實作(再加上必要的包裝, 如隱藏RemoteException)便可輕易替換


reply to postreply to post
http://www.eAvatar.com
e化身咖啡館 - 資訊技術與企業應用討論社群!
IT for enterprise computing community!
作者 Re:Singleton vs. 靜態類別有什麼差別 [Re:jamiecom]
tanym





發文: 54
積分: 0
於 2005-03-24 23:25 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
看你得例子, 我覺得你的singleton想法, 跟我的不大一樣(先聲明我的不一定ok, 僅參考), 我覺得singleton是一種觀念, java用static去implement, 其他language也許有他自己方法, 所以你問singleton跟static有啥差別, 以java來說, 也許可以說一個是觀念, 一個是手段, 但是對SD的人, 他畫出的圖中出現singleton的話, 並沒有說要用哪一種方法去實現(好像太理想了厚...), 他只是要求要"唯一物件"這件事, 另一個我對你的code example有點疑問的地方是, 你的name為啥也要用static, 這好像有點怪, 應該說....

reply to postreply to post
有交流才有進步, 不該把自己埋在象牙塔內
作者 Re:Singleton vs. 靜態類別有什麼差別 [Re:jamiecom]
alien

小弟劣作一幅



發文: 772
積分: 6
於 2005-03-27 02:14 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Singleton, 我印象沒錯的話, 在 GoF 的定義內也有 "非唯一" 的變種.
其次, 單用class scope 的method/data 來達到singleton-like 的效果, 所能達到的只是 "唯一" 這方面.
但 Singleton 的(動態)更換實作, 甚至作為一個 object 可以做到的事等等的特點, 單用 class method/data 就達不到了.


reply to postreply to post

public class Alien {
public boolean isNewbie() {
return true;
}
public String toString() {
return "請大家多多指教";
}
}
» JWorld@TW »  Software Design

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8