作者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)