设计模式之登记式单例类

来源:互联网 发布:京东软件开发待遇 编辑:程序博客网 时间:2024/04/28 14:34

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

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