设计模式剖析系列之单例模式

By heiry on 2019-08-05 [ in 技术 ]

核心点:

—— 单例类只有一个实例对象;

—— 该单例对象必须由单例类自行创建;

—— 单例类对外提供一个访问该单例的全局访问点;

实现方式:

1.构造方法私有

2.提供类自身定义一个静态私有实例

3.向外提供一个静态的公有方法用于创建或获取该静态私有实例,该方法是对外唯一提供的创建实例途径。

主要分类

——饿汉式:类一旦加载就创建实例,保证在调用静态方法之前单例已经存在了,特点是线程安全。

——懒汉式:只有在第一次调用的时候才会创建,非线程安全,需要考虑线程同步。

 

package net.mosang.singleton;
/**
 * 饿汉式单例模式
 * @author heiry
 *
 */
public class HungrySingLeton {
  private static  HungrySingLeton instance = new HungrySingLeton();
  private HungrySingLeton() {//私有构造方法
  }
  public static HungrySingLeton getInstance() { //对外提供唯一的获取实例方法
    return instance;
  }
}
package net.mosang.singleton;
/**
 * 懒汉式单例模式
 * @author heiry
 *
 */
public class LazySingLeton {
  private static  LazySingLeton instance =null;
  private LazySingLeton() {//私有构造方法
  }
  public static synchronized LazySingLeton getInstance() { //synchronized线程同步,避免并发创建多个对象
    if(instance==null) {
      instance = new LazySingLeton();
    }
    return instance;
  }
}

 

 >>

京ICP备15064511号 © 2009-2017 MOSANG.NET DESIGNED BY HEIRY WU