设计模式简单入门---单例模式
Posted shaoxiaosa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式简单入门---单例模式相关的知识,希望对你有一定的参考价值。
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 ; } }
以上是关于设计模式简单入门---单例模式的主要内容,如果未能解决你的问题,请参考以下文章