java 设计模式-单例

一、单例模式定义:

单例模式确保某个了某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在实际应用中,如打印机,线程池,日志等

二、单例模式特点:
  1、单例类只能有一个实例。
  2、单例类必须自己创建自己的唯一实例。
  3、单例类必须给所有其他对象提供这一实例。

单例模式保证了全局对象的唯一性

实现单例模式的方法:

1 把构造函数设置为private 防止类被随意创建对象

2 提供public的方法返回单例对象

public class Singleton{

 private static Singleton uniqueInstance ;

//创建单例对象的静态方法,延迟创建实例了其实

 public static Singleton getInstance(){

   if(null == uniqueInstance )

   {

   uniqueInstance  = new Singleton();

   }

return uniqueInstance  ;

  }

}

多线程情况下:

1 考虑线程安全时,创建单例的静态方法加上 synchronized ,

    该方式运行效率却很低下,下一个线程想要获取对象,就必须等待上一个线程释放锁之后,才可以继续运行。

2 考虑多线程性能时,使用“急切”创建实例

 private static Singleton uniqueInstance  = new Singleton();

 getInstance(){return uniqueInstance  }

3 双重检查加锁,减少在getInstance()中使用同步 性能最好,避免整个方法被锁,只对需要锁的代码部分加锁

public class Singleton4 {
    // 私有构造
    private Singleton4() {}

    private static Singleton4 single = null;

    // 双重检查
    public static Singleton4 getInstance() {
        if (single == null) {
            synchronized (Singleton4.class) {
                if (single == null) {
                    single = new Singleton4();
                }
            }
        }
        return single;
    }
}

猜你喜欢

转载自www.cnblogs.com/hup666/p/10302151.html