单例设计模式的简单model

 
单例模式

       简单点说,就是一个应用程序中,某个类的实例对象只有一个,你没有办法去new,因为构造器是被private修饰的,一般通过getInstance()的方法来获取它们的实例。getInstance()的返回值是一个对象的引用,并不是一个新的实例,所以不要错误的理解成多个对象。

    单例模式实现起来也很容易,但是大量使用单例模式可能造成内存泄露,因为单例对象一旦创建,就会保存在堆中,垃圾回收器也无法清除这个对象的引用,因为Hot spot本身是采用“引用链可达法”来进行是否进行回收的,而单例这样单独的存在会造成一个强引用,而无法被清除。这样对象堆积下去,就会发生out of memory!

    单例模式实现方法一般有三种:懒汉式单例、饿汉式单例、登记式单例。

下面直接写代码:懒汉式的线程安全的单例

     

//懒汉 线程安全  单例
public class Singleton {

    private static Singleton singleton;

    private Singleton() {
    }

    public static Synchronized Singleton getInstance() {
        if (singleton == null) {
            singleton = new Singleton();
        }
        return singleton;
    }
}   


posted @ 2018-05-02 16:31  坠落凡尘的魔鬼  阅读(279)  评论(0编辑  收藏  举报