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号
浙公网安备 33010602011771号