单例模式

一、单例模式

  a、单例模式的构造方法是私有的,所以在其他类中我们是没有办法直接实例化它的.但是它对外提供了一个获取类实例的方法,所以不论有多少类调用,他对外只会产生一个类的实例。

  b、什么情况下使用单例模式比较好?

  (1)这个类中的方法需要多次被调用

  (2)保证一个类只有一个实例,并提供访问它的唯一全局访问点。,比如系统日志的输出、操作系统的任务管理器等。

  1、懒汉式单例模式

    优点:需要使用的时候再创建实例,不提前占用资源。      缺点:线程不安全,使用synchronized后,消耗时间较长

public class Singletion {
    private Singletion() {}
    private static Singletion singletion = null;
    private static synchronized Singletion getInstance(){
        if(singletion == null){
            singletion = new Singletion();
            return singletion;
        }
        return singletion;
    } 
}

 

  2、懒汉式单例模式升级版(解决了同步后,消耗时间长的问题)    

public class Singletion {
private Singletion() {}
    private static Singletion singletion = null;
    private static Singletion getInstance(){
        if(singletion == null){
            synchronized (Singletion.class) {
                if(singletion == null){
                    singletion = new Singletion();
                }
            }
        }
        return singletion;
    } 
}

 

 

2、饿汉式单例模式

    优点:在类创建的同时就已经创建好一个静态的对象,以后不再改变,所以天生是线程安全的。    缺点:提前占用内存

public class Singletion {

    private Singletion() {}
    private static Singletion singletion = new Singletion();
    private static Singletion getInstance(){
        return singletion;
    } 
}

 

posted @ 2017-08-23 14:24  雨佳霍  阅读(114)  评论(0编辑  收藏  举报