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);
 }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值