单例模式

来源:互联网 发布:淘宝买黄金项链可靠吗 编辑:程序博客网 时间:2024/06/03 21:05

        

         Java中有23种设计模式,这篇博客说一说单例模式,它是设计模式中最简单的一种设计模式。上面是借用百科的图片来图形化介绍一些单例模式。

          单例模式:一个类仅且只有一个实例,并且自行实例化向整个系统提供。

懒汉式:

package com.panli.designpattern.singleton;/** * 线程不安全的懒汉式单例 * 懒汉式:在第一次调用的时候再实例化自己 * @author Peter * */public class Singleton_LanHan {private Singleton_LanHan(){}private static Singleton_LanHan instance = null;//静态工厂方法,线程不安全public static Singleton_LanHan getInstance1(){if(instance==null){instance = new Singleton_LanHan();}return instance;}//方法同步,线程安全public static synchronized Singleton_LanHan getInstance2(){if(instance==null){instance = new Singleton_LanHan();}return instance;}//双重锁机制public static Singleton_LanHan getInstance3(){if(instance==null){synchronized(Singleton_LanHan.class){if(instance==null){instance = new Singleton_LanHan();}}}return instance;}//静态内部类private static class LazyHolder{private static final Singleton_LanHan INSTANCE = new Singleton_LanHan();}public static final Singleton_LanHan getInstance4(){return LazyHolder.INSTANCE;}}

恶汉式:

package com.panli.designpattern.singleton;/** * 线程不安全的恶汉式单例 * 恶汉式:在类初始化时,已经自行实例化 * @author Peter * */public class Singleton_ErHan {private Singleton_ErHan(){}private static Singleton_ErHan instance = new Singleton_ErHan();//静态方法public static Singleton_ErHan getInstance(){return instance;}}