老菜鸟的笔记本
导航
BlogJava
首页
新随笔
联系
聚合
管理
统计
随笔 - 44
文章 - 3
评论 - 108
引用 - 0
公告
寂寞的菜鸟总是一个人奔跑
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(25)
给我留言
查看公开留言
查看私人留言
随笔分类
.net
(rss)
c++(5)
(rss)
cs(1)
(rss)
j2me(6)
(rss)
java(17)
(rss)
python(2)
(rss)
ruby(2)
(rss)
scm(1)
(rss)
厨房
(rss)
坏孩子的小玩具(11)
(rss)
随笔档案
2009年5月 (1)
2009年4月 (1)
2008年7月 (17)
2008年6月 (26)
文章分类
j2me(1)
(rss)
java
(rss)
ruby
(rss)
坏孩子的恶作剧(1)
(rss)
文章档案
2008年6月 (2)
搜索
最新评论
1. re: 使用jdbc在西文字符集oracle中存取中文[未登录]
不好意思提一个菜鸟问题,下载之后怎么用@~
--路人乙
2. re: c++中的计时操作[未登录]
iostream
--无名
3. re: 实现自己的j2me 企业应用UI-欢迎拍砖
能否分享代码用于学习wengdaxiong@126.com
--wengdaxiong
4. re: 实现自己的j2me 企业应用UI-欢迎拍砖
顶一个,楼主能不能分享下源码。我的邮箱zhouht888@126.com
--J2ME开发者
5. re: 使用jdbc在西文字符集oracle中存取中文
不好意思提一个菜鸟问题,下载之后怎么用@lll
--路人甲
阅读排行榜
1. 网络通讯框架mina和xscocket的简单比较(13181)
2. 使用H2的MixedMode模式 (6858)
3. word文件转换wiki格式的简易方法(6666)
4. 确实好用-visualvm(5724)
5. 使用jdbc在西文字符集oracle中存取中文(5333)
评论排行榜
1. 实现自己的j2me 企业应用UI-欢迎拍砖(32)
2. 如何建设软件团队的一些问答(10)
3. 使用H2的MixedMode模式 (8)
4. 使用jdbc在西文字符集oracle中存取中文(8)
5. 网络通讯框架mina和xscocket的简单比较(7)
Effective Java 读书笔记(2)- Singleton
昨晚再翻看到的, 和enum有关。 Singleton的2种常见写法和bob的新写法一般人都应该很熟悉了。但是如果类实现了序列化接口则会有所不同,如下面代码。
1
public
class
Elvis
implements
Serializable
{
2
public
static
final
Elvis INSTANCE
=
new
Elvis();
3
private
Elvis()
{ }
4
private
final
String[] favoriteSongs
=
5
{
"
Hound Dog
"
,
"
Heartbreak Hotel
"
}
;
6
public
void
printFavorites()
{
7
System.out.println(Arrays.toString(favoriteSongs));
8
}
9
private
Object readResolve()
{
10
return
INSTANCE;
11
}
12
}
因为存在nontransient 的属性,则hacker可以通过反序列化的方式获得singleton的多个实例。 所以老Bloch说,最好的Singleton模式还是用enum。也真难为他了,这都想的出来。
其实现在一般应用,因为spring的普及,在语法层面上去实现singleton已经不是一个好模式了。
在java one 2008里面的另外一个session 就专门对这个问题做了讨论,利用接口和injection的方式进行改良,可以解决 singleton不利于测试的问题。
public
interface
Singleton
{
Object read();
}
public
class
SingletonImpl
implements
Singleton
{
public
Object read()
{
//
nasty database call
}
}
public
class
InnocentBystander
{
private
final
Singleton singleton;
public
InnocentBystander(Singleton singleton)
{
this
.singleton
=
singleton;
}
public
void
something()
{
Object foo
=
singleton.read();
//
etc
}
}
soso而已,这些老外有时候也挺无聊的。
posted on 2008-07-11 18:29
鬼狗
阅读(1072)
评论(1)
编辑
收藏
所属分类:
java
Comments
#
re: Effective Java 读书笔记(2)- Singleton
隔叶黄莺
看得不是很明白,也够麻烦的,Singleton 可以用 AOP 截下所有创建对象的入口返回单一实例应该是可行的。
Posted @ 2008-07-18 10:35
回复
更多评论
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
相关文章:
设置gwt eclipse插件的jndi支持
restful web service 读书笔记(1)
架构大师之路
Effective Java 读书笔记(2)- Singleton
确实好用-visualvm
利用cucurrent 的Callable 改进方法调用性能
j2ee性能调优之最小化资源压力测试法则
java quick starter来了
简单好用的http 分析的小工具 httptrace
Effective Java第二版读书笔记(1) - 枚举