作者codemonkey (程式猿)
看板java
標題Fw: [閒聊] 這是獨體模式嗎: Calendar class
時間Wed Apr 11 23:12:52 2012
※ [本文轉錄自 AndroidDev 看板 #1FXPLuV4 ]
剛剛發現calendar是java就有的API,
所以也轉到java板來請教了
作者: codemonkey (程式猿) 看板: AndroidDev
標題: [閒聊] 這是獨體模式嗎 - Calendar class
時間: Wed Apr 11 22:30:13 2012
因為是寫應用程式的關係,常常會用到時間和訂位的API,
所以Calendar之類的物件也用得很習慣
Calendar c = Calendar.getInstance();
...
不過今天突然發現,這種呼叫靜態method獲取實體的方式,
不就是獨體模式(singleton)的作法嗎
可是Calendar又是可以直接被new出來的,
(constructor非private)
所以實做上Calendar類別會有『實體們』出現,
好像又不太符合獨體模式的意義...除非這是變形版的作法
這是API文件,沒有查到關鍵字,constructor也不是private、
也沒有靜態欄位用來分配唯一的實體
http://developer.android.com/reference/java/util/Calendar.html
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 110.50.146.63
※ 編輯: codemonkey 來自: 110.50.146.63 (04/11 22:32)
1F:→ yauhh:你做二個instance出來,改第一個的內容,如果第二個狀態也改變 04/11 22:45
2F:→ yauhh:那就是singleton 04/11 22:45
關於constructor,文件的說明是
Constructs a Calendar instance using the default TimeZone and Locale.
請問這是說預設就會幫你建立一個獨體的實例嗎,
也就是說允許你new一個出來、但是會偷偷幫你getInstance() ??
※ 編輯: codemonkey 來自: 110.50.146.63 (04/11 23:11)
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: codemonkey (110.50.146.63), 時間: 04/11/2012 23:12:52
※ 編輯: codemonkey 來自: 110.50.146.63 (04/11 23:14)
3F:→ awert:不是看到static factory method就一定是singleton 04/11 23:43
4F:→ awert:Calendar.getInstance只是個普通的static factory method 04/11 23:45
5F:→ awert:如果你夠細心你應該會發現Calendar只是個abstract class 04/11 23:46
6F:→ awert:事實上你看code就會發現它根據locale回傳不同的subclass給你 04/11 23:47
8F:→ adrianshum:簡單來說,不是 Singleton. 是 Factory Method 04/11 23:59
9F:→ adrianshum:建議你真的去理解一下各個常見 pattern 04/11 23:59
感謝解惑 & 正在瞭解DP這塊...
※ 編輯: codemonkey 來自: 110.50.146.63 (04/12 00:10)