您的位置:首页 > 编程语言 > Java开发

设计模式之登记式单例类

2013-03-29 10:44 197 查看

设计模式之 登记式单例类,最原形的代码,个人感觉对学习很有用,贴上来

viewsourceprint?
01
import
java.util.HashMap;
02
public
class
RegSingleton
03
{
04
static
private
HashMap
m_registry =
new
HashMap();
05
static
06
{
07
RegSingleton
x =
new
RegSingleton();
08
m_registry.put(
x.getClass().getName() , x);
09
}
10
/**
11
*
保护的默认构造子
12
*/
13
protected
RegSingleton()
{}
14
/**
15
*
静态工厂方法,返还此类惟一的实例
16
*/
17
static
public
RegSingleton
getInstance(String name)
18
{
19
if
(name
==
null
)
20
{
21
name
=
"com.javapatterns.singleton.demos.RegSingleton"
;
22
}
23
if
(m_registry.get(name)
==
null
)
24
{
25
try
26
{
27
m_registry.put(
name,
28
Class.forName(name).newInstance()
) ;
29
}
30
catch
(Exception
e)
31
{
32
System.out.println(
"Error
happened."
);
33
}
34
}
35
return
(RegSingleton)
(m_registry.get(name) );
36
}
37
/**
38
*
一个示意性的商业方法
39
*/
40
public
String
about()
41
{
42
return
"Hello,
I am RegSingleton."
;
43
}
44
}
45
/***
46
它的子类RegSingletonChild
需要父类的帮助才能实例化。请看下面的相关代码:
47
**/
48
49
import
java.util.HashMap;
50
public
class
RegSingletonChild
extends
RegSingleton
51
{
52
public
RegSingletonChild()
{}
53
/**
54
*
静态工厂方法
55
*/
56
static
public
RegSingletonChild
getInstance()
57
{
58
return
(RegSingletonChild)
59
RegSingleton.getInstance(
60
"com.javapatterns.singleton.demos.RegSingletonChild"
);
61
}
62
/**
63
*
一个示意性的商业方法
64
*/
65
public
String
about()
66
{
67
return
"Hello,
I am RegSingletonChild."
;
68
}
69
}
70
71
/*********************************一个子类实现的范例**************************/
72
import
java.util.HashMap;
//使用了哈希映射的相关方法
73
public
class
RegSingletonChild
extends
RegSingleton
{
74
public
RegSingletonChild()
{} 
75
/**
* 静态工厂方法 */
76
static
public
RegSingletonChild
getInstance() { 
77
return
(RegSingletonChild)
78
RegSingleton.getInstance(
"com.javapatterns.singleton.demos.RegSingletonChild"
);
79
}
80
/*** 一个示意性的商业方法 */
81
public
String
about() { 
82
return
"Hello,
I am RegSingletonChild."
;
83
}
84
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  登记单例类 java