再说设计模式-单例模式

2019-01-29  本文已影响21人  oneape15

定义

单例模式(Singleton Pattern)是一个比较简单的模式,其定义如下:

Ensure a class has only one instance, and provide a global point of access to it.
确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

单例模式能用代码:

public class Singleton {
  private static final Singleton singleton = new Singleton();
  // 限制产生多个对象
  private Singleton() {
  }

  // 通过该方法获得实例对象
  public static Singleton getSingleton() {
    return singleton;
  }
  // 类中其他方法,尽量是static修饰
  public static doSomething() {
  }
}

应用

单例模式的优点
单例模式的缺点
单例模式的使用场景

在一个系统中,要求一个类有且仅有一个对象,如果出现多个对象就会出现不良反应,我们就可以采用单例模式,具体的场景如下:

单例模式中的懒汉和饿汉模式

饿汉模式:

public class Singleton {
  private static final Singleton singleton = new Singleton();
  // 限制产生多个对象
  private Singleton() {
  }

  // 通过该方法获得实例对象
  public static Singleton getSingleton() {
    return singleton;
  }
  // 类中其他方法,尽量是static修饰
  public static doSomething() {
  }
}

懒汉模式:

public class Singleton {
  private static final Singleton singleton = null;
  // 限制产生多个对象
  private Singleton() {
  }

  // 通过该方法获得实例对象
  public static Singleton getSingleton() {
    if (singleton == null) {
         singleton = new Singleton();
    } 
     return singleton;
  }
  // 类中其他方法,尽量是static修饰
  public static doSomething() {
  }
}

上面的懒汉模式,在并发环境下是线程不安全的,如果我们想要在懒汉模式下单例属于线程安全,只需要在getSingleton增加 synchronized修饰符即可。

上一篇 下一篇

猜你喜欢

热点阅读