一叶笑天
雄关漫道真如铁, 而今迈步从头越。 从头越, 苍山如海, 残阳如血。
BlogJava
首页
新随笔
新文章
联系
聚合
管理
posts - 73,comments - 7,trackbacks - 0
<
2008年6月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
本博客的文章仅供本人学习之用,如果您阅读后,认为不适合,请默默离开
。 本人不负责连带责任。
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(4)
给我留言
查看公开留言
查看私人留言
随笔分类
(65)
Eclipse技术(3)
Hibernate技术
Java EE技术(1)
JAVA技术(29)
Perl技术(2)
Shell技术(6)
Struts技术(3)
个人转贴(5)
人生感悟(3)
开源技术(12)
网站技术(1)
随笔档案
(67)
2011年8月 (1)
2010年3月 (1)
2009年5月 (1)
2009年4月 (3)
2009年3月 (1)
2009年2月 (1)
2009年1月 (3)
2008年12月 (12)
2008年9月 (2)
2008年8月 (11)
2008年7月 (8)
2008年6月 (22)
2005年9月 (1)
链接博客
oksonic博客
Struts2
搜索
最新评论
1. re: 使用AutowiringRequestProcessor整合struts和Spring2.0
1. 这种autowire的注入支持两种不同的方式,分别是byName和byType,默认是byType。我想这对于绝大多数开发者来说是够了。
请问怎么配置方式为byName呢?
--AUTOCHECK
2. re: [转贴]Spring JTA应用之JOTM配置[未登录]
请问能够将dao层的代码贴出来吗? 或者直接将源码挂出来
--111
3. re: Struts2边学边练(3)-Struts2集成Hibernate完成CRUD操作[未登录]
原微软大中华区副总出任Teradata大中华区总裁@micheal
--dd
4. re: Struts2边学边练(3)-Struts2集成Hibernate完成CRUD操作[未登录]
加入你的USER对象要是有100个字段,你的edit页面怎么处理?
--micheal
5. re: SCJP-031-055备战笔记-1.3-Java5中基本数据类型
4:java中的char不属于整数类型!!!作者是不是搞错了???
--hdwt
阅读排行榜
1. 使用Eclipse远程调试(翻译)(5998)
2. [转贴]Spring JTA应用之Atomikos配置 (4151)
3. PHPBB3安装上路(3547)
4. Maven2新手上路(3242)
5. Internal error - the selected file is a system file that cannot be modified的解决方法(2869)
评论排行榜
1. Struts2边学边练(3)-Struts2集成Hibernate完成CRUD操作(2)
2. 春(2)
3. SCJP-031-055备战笔记-1.3-Java5中基本数据类型(1)
4. [转贴]Spring JTA应用之JOTM配置(1)
5. 使用AutowiringRequestProcessor整合struts和Spring2.0(1)
Effective Java (2nd Edition)读书笔记-Item 3: 使用私有构造函数或者枚举类型来增强单例属性
在Jdk1.5之前有两种方式实现单例。它们都是采用维护私有构造器并且暴露一个static的成员函数来提供访问单一实例对象。第一种方式是将成员变量声明为final类型,例如:
//
Singleton with public final field
public
class
Elvis
{
public
static
final
Elvis INSTANCE
=
new
Elvis();
private
Elvis()
{
}
public
void
leaveTheBuilding()
{
}
}
另外一种方式是采用一个static的工厂方法:例如
//
Singleton with static factory
public
class
Elvis
{
private
static
final
Elvis INSTANCE
=
new
Elvis();
private
Elvis()
{
}
public
static
Elvis getInstance()
{
return
INSTANCE; }
public
void
leaveTheBuilding()
{
}
}
public field方式的主要优势是在于清楚的声明了指定的类是单例的。
static的工厂方法优势在于可以灵活设置指定的类应不应该在不改变它的API的前提下是不是一个单例。
为了实现用前面介绍的方式来实现单例的serializable,不能仅仅增加implement Serializable。为了一直保持单例状态,必须声明所有的属性为transient,而且提供一个readResolve方法。否则当一个类反序列化的时候,新的实例将会随之生成。为了保持Elvis类单例,可以增加下面的函数:
//
readResolve method to preserve singleton property
private
Object readResolve()
{
//
Return the one true Elvis and let the garbage collector
//
take care of the Elvis impersonator.
return
INSTANCE;
}
在1.5中,还可以用另外一种方式实现单例。使用enum来保持类单例:
//
Enum singleton - the preferred approach
public
enum
Elvis
{
INSTANCE;
public
void
leaveTheBuilding()
{
}
}
除了它更简明,这种方式等同于public属性方式。免费提供了序列化机制,即使面对尖端的序列化或者反射攻击,它都提供了坚实的单例。
结论:
这种方式还需要广泛的采纳,
元素级的单例枚举类型是最好的实现单例的方法。
While this approach has yet to be widely
adopted, a single-element enum type is the best way to implement a singleton.
posted on 2008-06-18 21:49
一叶笑天
阅读(371)
评论(0)
编辑
收藏
所属分类:
JAVA技术
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
树的遍历(转贴)
转贴:java类加载内幕
[转贴]用Java Socket开发小型服务器收藏
[转贴]Java调用dos命令
转贴:全世界所有程序员都会犯的错误-蔡学镛
SCJP-031-055备战笔记-4.1-Java5中基本类型的转换
SCJP-031-055备战笔记-4.4-Java5中引用类型的转型
SCJP-031-055备战笔记-4.3-Java5中引用类型的转换
SCJP-031-055备战笔记-4.2-Java5中基本类型的转型
SCJP-031-055备战笔记-3.5-Java5中的strictfp,synchronized,transient修饰符