大神求救,对于静态工厂方法创建对象和Calendar类彻底蒙蔽了

人间正道是沧桑818 2018-03-10 08:42:30
effective java中说,静态工厂方法创建对象有好多好处,其中一个是:不必每次都创建一个新对象,可以把预先创建好的实例缓存起来重复利用。。。。。。。

那么问题来了


Calendar通过Calendar c = Calender.getInstance()静态工厂方法创建对象时,返回的会是同一个对象?显然是不可能的啊,Calendar类又不是单例。。。。。。。


我也试过了,Calendar创建的对象,即便是有的hashcode相同,但依然返回false,说明对象是不一样的


那么,怎么理解:“不必每次都创建一个新对象,可以把预先创建好的实例缓存起来重复利用” 这句话呢?
...全文
428 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
flamen087 2018-03-16
  • 打赏
  • 举报
回复
点进Calendar的getInstance方法看一眼就明白了,这个是根据local信息new一个对象出来,不是单例模式。
maradona1984 2018-03-14
  • 打赏
  • 举报
回复
引用 3 楼 King_818 的回复:
[quote=引用 2 楼 maradona1984的回复:]读书要带着上下文去理解,并不是所有工厂方法都返回单例的(或者缓存起来),至少Calendar不适合,每次都返回同一个对象,看Calendar的实现不太适合单例,因为可能产生线程安全问题 工厂方法有很多别的优点,但这些优点是通过编码实现的,如果代码不那么写,那个优点自然没有
嗯,类似单例模式,就是通过静态工厂方法加代码实现的,工厂方法只是一类统称,具体怎么用,还得看具体实现,对吧?[/quote] 是的,你可以称之为简单工厂模式,他的优缺点也可以百度下,只是初学也不太可能深入理解这些东西,大概了解下就行了
  • 打赏
  • 举报
回复
引用 2 楼 maradona1984的回复:
读书要带着上下文去理解,并不是所有工厂方法都返回单例的(或者缓存起来),至少Calendar不适合,每次都返回同一个对象,看Calendar的实现不太适合单例,因为可能产生线程安全问题 工厂方法有很多别的优点,但这些优点是通过编码实现的,如果代码不那么写,那个优点自然没有
嗯,类似单例模式,就是通过静态工厂方法加代码实现的,工厂方法只是一类统称,具体怎么用,还得看具体实现,对吧?
maradona1984 2018-03-12
  • 打赏
  • 举报
回复
读书要带着上下文去理解,并不是所有工厂方法都返回单例的(或者缓存起来),至少Calendar不适合,每次都返回同一个对象,看Calendar的实现不太适合单例,因为可能产生线程安全问题 工厂方法有很多别的优点,但这些优点是通过编码实现的,如果代码不那么写,那个优点自然没有
  • 打赏
  • 举报
回复

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧