Fw: [閒聊] 這是獨體模式嗎: Calendar class

看板java作者 (程式猿)時間12年前 (2012/04/11 23:12), 編輯推噓0(007)
留言7則, 3人參與, 最新討論串1/1
※ [本文轉錄自 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)

04/11 22:45, , 1F
你做二個instance出來,改第一個的內容,如果第二個狀態也改變
04/11 22:45, 1F

04/11 22:45, , 2F
那就是singleton
04/11 22:45, 2F
關於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)

04/11 23:43, , 3F
不是看到static factory method就一定是singleton
04/11 23:43, 3F

04/11 23:45, , 4F
Calendar.getInstance只是個普通的static factory method
04/11 23:45, 4F

04/11 23:46, , 5F
如果你夠細心你應該會發現Calendar只是個abstract class
04/11 23:46, 5F

04/11 23:47, , 6F
事實上你看code就會發現它根據locale回傳不同的subclass給你
04/11 23:47, 6F

04/11 23:47, , 7F
04/11 23:47, 7F

04/11 23:59, , 8F
簡單來說,不是 Singleton. 是 Factory Method
04/11 23:59, 8F

04/11 23:59, , 9F
建議你真的去理解一下各個常見 pattern
04/11 23:59, 9F
感謝解惑 & 正在瞭解DP這塊... ※ 編輯: codemonkey 來自: 110.50.146.63 (04/12 00:10)
文章代碼(AID): #1FXPzrDi (java)