java设计模式(1) - 单例模式

最长用设计模式-单例模式,常用的有三种实现方式:
    饿汉式,懒汉式, 登记式

1. 饿汉式:在变量声明时实例化对象。(线程安全)

2.懒汉式: 在变量用的时候实例化对象,线程不安全,需要加锁。

3.登记式:在对象内部维护一个map集合,对象实例时初始化map,并把对象实例放
到map中,第次从map中取对象。

==================================================================
/**
 * 饿汉式
 *
 * @author jiangwei
 *
 */
public class SingleInstance1 {
 //1.实例化对象
 private static SingleInstance1 instance = new SingleInstance1();
 //2.私有化构造方法
 private SingleInstance1() {
 }
 //3.暴露getInstance方法
 public static SingleInstance1 getInstance() {
  return instance;
 }
}

======================================================================
/**
 * 懒汉式
 * @author jiangwei
 *
 */
public class SingleInstance2 {
 //1.声明对象
 private static SingleInstance2 instance = null;
 //2.私有化构造方法
 private SingleInstance2() {
 }
 //3.暴露getInstance方法
 public synchronized static SingleInstance2 getInstance() {
  if(instance == null) {
   //实例化对象
   instance = new SingleInstance2();
  }
  return instance;
 }
}

==============================================================
/**
 * 3.登记式 : 单例容器
 * @author jiangwei
 *
 */
public class SingleInstance3 {
 private static Map<String, Object> map = new HashMap<String, Object>();
 
 private SingleInstance3() {};
 
 public static Object getInstance(String key) {
  if(map.get(key) == null) {
   try {
    Object object = Class.forName(key);
    map.put(key, object);
   } catch (ClassNotFoundException e) {
    e.printStackTrace();
   }
  }
  return map.get(key);
 }
}

你可能感兴趣的:(设计模式,java设计模式)