java: Singleton Pattern
/**
* 版权所有 2022 涂聚文有限公司
* 许可信息查看:
* 描述:
* 单例模式 (Singleton Patterns)
* 历史版本: JDK 14.02
* 2022-09-12 创建者 geovindu
* 2022-09-12 添加 Lambda
* 2022-09-12 修改:date
* 接口类
* 2022-09-12 修改者:Geovin Du
* 生成API帮助文档的指令:
*javadoc - -encoding Utf-8 -d apidoc RegSingleton.java
*
* */
package com.javapatterns.singleton;
import java.util.HashMap;
public class RegSingleton {
static private HashMap m_registry = new HashMap();
/**
*保护默认构造子
* */
protected RegSingleton() {}
/**
* 静态工厂方法
* */
static public RegSingleton getInstance(String name)
{
if (name == null)
{
name = "com.javapatterns.singleton.RegSingleton";
}
System.out.println("From RegSingleton: requesting for " + name );
if (m_registry.get(name) == null)
{
try
{
m_registry.put( name, Class.forName(name).newInstance() ) ;
}
catch(ClassNotFoundException e)
{
System.out.println("Class " + name + " is not found.");
}
catch(InstantiationException e)
{
System.out.println("Class " + name + " can not be instantiated.");
}
catch(IllegalAccessException e)
{
System.out.println("Class " + name + " can not be accessed.");
}
}
return (RegSingleton) (m_registry.get(name) );
}
static
{
RegSingleton x = new RegSingleton();
m_registry.put( x.getClass().getName() , x);
}
/**
* 一个示意性商业方法
* **/
public String about()
{
return "Hello, I am RegSingleton.";
}
}
/**
* 版权所有 2022 涂聚文有限公司
* 许可信息查看:
* 描述:
* 单例模式 (Singleton Patterns)
* 历史版本: JDK 14.02
* 2022-09-12 创建者 geovindu
* 2022-09-12 添加 Lambda
* 2022-09-12 修改:date
* 接口类
* 2022-09-12 修改者:Geovin Du
* 生成API帮助文档的指令:
*javadoc - -encoding Utf-8 -d apidoc RegSingletonChild.java
*
* */
package com.javapatterns.singleton;
import java.util.HashMap;
public class RegSingletonChild extends RegSingleton{
public RegSingletonChild() {}
/**
* 静态工厂方法
* */
static public RegSingletonChild getInstance()
{
return (RegSingletonChild) RegSingleton.getInstance( "com.javapatterns.singleton.RegSingletonChild" );
}
/**
* 一个示意性商业方法
* **/
public String about()
{
return "Hello, I am RegSingletonChild.";
}
}
调用测试:
//登记单例模式
RegSingleton s = RegSingleton.getInstance("RegSingleton");
if(s==null)
{
System.out.println("未找到类");
}
else
{
String ss=s.about();
System.out.println(ss);
}
RegSingletonChild sc=RegSingletonChild.getInstance();
if(sc==null)
{
System.out.println("未找到类");
}
else
{
String ssc=sc.about();
System.out.println(ssc);
}
输出:
From RegSingleton: requesting for RegSingleton Class RegSingleton is not found. 未找到类 From RegSingleton: requesting for com.javapatterns.singleton.RegSingletonChild Hello, I am RegSingletonChild.
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
浙公网安备 33010602011771号