码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式简单入门---单例模式

时间:2018-08-24 02:07:36      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:bsp   ons   glob   控制   private   ide   对象   turn   stat   

1 定义

  Ensure a class only has one instance,and provide a global point of access to it. (保证一个类仅有一个实例,并提供一个访问它的全局访问点)

2 用处

   当前系统的某一个对象只需要一个实例的时候使用,比如:JDBC的连接在很多时候只需要一个实例。

3 优点

  有利于控制实例的个数,从而节省了内存,有利于java的垃圾回收。

4 实现

  懒汉模式(不能在多线程中使用)

public class SimpleSingleton {
    private static SimpleSingleton instance;
    private SimpleSingleton(){}
    public static SimpleSingleton getIntance(){
        if(instance == null)
            instance = new SimpleSingleton();
        return instance;
    }
}

  懒汉模式(可以在多线程下使用,但效率低)

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

  饿汉模式(会在初始化的时候进行实例化,初始化速度变慢)

public class SingletonHungry {
    private static SingletonHungry instance = new SingletonHungry();
    private SingletonHungry(){}
    public static SingletonHungry getInstance(){
        return instance;
    }
}

  枚举(不仅能避免多线程同步问题,而且还能防止反序列化重新创建新的对象,没有实际使用过,简单粗暴~)

public enum SingletonEnum {
    instance;
   
}

  双重校验锁

public class SingletonDouble {
    private volatile static SingletonDouble singletonDouble;
    private SingletonDouble(){}
    public static SingletonDoublegetSingletonDemo7(){
        if (singletonDouble== null) {
            synchronized (SingletonDouble .class) {
                if (singletonDouble== null) {
                    singletonDouble= new SingletonDouble ();
                }
            }
        }
        return SingletonDouble ;
    }
}

 

设计模式简单入门---单例模式

标签:bsp   ons   glob   控制   private   ide   对象   turn   stat   

原文地址:https://www.cnblogs.com/shaoxiaosa/p/9521312.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!