您的位置:首页 > 编程语言 > Java开发

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

2015-08-06 20:47 393 查看
最长用设计模式-单例模式,常用的有三种实现方式:
    饿汉式,懒汉式, 登记式

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);
 }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息