Singelton单例模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Singelton单例模式相关的知识,希望对你有一定的参考价值。

单例,相当于一个全局变量,在整个应用程序中保证只有一个类的实例存在。

  

线程池、数据库连接池、缓存、日志等对象常被设计成单例

 

实例:

1.懒汉式单例

/**
 * 懒汉式单例Singelton:是一种创建性模式,在运行期调用对外开发的方法getInstance时创建单例对象
 *         确保每次只创建一个实例,并提供一个全局访问点
 *         
 * 缺陷:不满足线程安全的要求,在并发环境下很可能出现多个Singleton实例(不推荐使用)
 * @author 魅力_小生
 */
public class SingeltonTest01 {
    
    /**
     * 私有的静态属性(自身)
     */
    private static SingeltonTest01 instance;
    
    /**
     * 私有构造,防止外部实例化
     * 
     * 但是:通过Java反射机制是能够实例化构造方法为private的类的,那基本上会使所有的Java单例实现失效
     */
    private SingeltonTest01(){
        
    }
    
    /**
     * 单例获取方法
     * 外部只能通过该方法获取类的实例
     * @return instance实例对象
     */
    public static SingeltonTest01 getInstance(){
        if(instance == null){
            instance = new SingeltonTest01();
        }
        return instance;
    }
}

2.饿汉式单例

/**
 * 饿汉式单例
 * 
 * 饿汉式单例类.在编译期类初始化时,已经自行实例化,从始至终只有一个对象
 * 线程安全,推荐使用
 * @author 魅力_小生
 */
public class SingeltonTest02 {
    
    /**
     * 创建私有静态的实例
     */
    private static SingeltonTest02 instance = new SingeltonTest02();
    
    /**
     * 私有构造,防止外部实例化
     */
    private SingeltonTest02(){
        
    }
    
    /**
     * 静态工厂方法,返回实例
     * @return
     */
    public static SingeltonTest02 getInstance(){
        return instance;
    }
}

 

以上是关于Singelton单例模式的主要内容,如果未能解决你的问题,请参考以下文章

简要分析Java程序的几种设计模式

设计模式之单例模式

常用代码片段

常用代码片段

性能比较好的单例写法

ActionScript 3 Singelton模板