java设计模式之Singleton(单例)

本文详细介绍了单例模式的概念、实现方式(饿汉式和懒汉式),并对比了两者的特点及适用场景。通过具体示例代码,阐述了单例模式在实际开发中的重要性和高效性。

所谓的单例模式是指单个实例,单即单个的意思,例乃实例的意思,就是一个类生成的对象。因此,单例模式的功能作用就是保证一个类只生成一个对象,是在代码级的实现,不是人工维护的。

  单例模式的实现需要以下两个步骤:

  1.单例类有一个存贮单例的私有属性

  2.单例类的构造方法必须是私有的

  3.单例类要有获取单例类实例的静态方法

  单例类示例:

  饿汉式单例代码

  package com.tao.pattern.singleton;

  /**

  * @author TaoistWar

  *

  */

  public class Singleton {

  // 1.单例类有一个存贮单例的私有属性

  private static Singleton singleton = new Singleton();

  // 2.单例类的构造方法必须是私有的

  private Singleton() {

  }

  // 3.单例类要有获取单例类实例的静态方法

  public static Singleton getInstance() {

  return singleton;

  }

  }

  懒汉式单例代码

  package com.tao.pattern.singleton;

  /**

  *

  * @author TaoistWar

  *

  */

  public class LazySingleton {

  // 1.单例类有一个存贮单例的私有属性

  private static LazySingleton singleton;

  // 2.单例类的构造方法必须是私有的

  private LazySingleton() {

  }

  // 3.单例类要有获取单例类实例的静态方法

  public synchronized static LazySingleton getInstance() {

  if (singleton == null) {

  singleton = new LazySingleton();

  }

  return singleton;

  }

  }

  比较:

  饿汉式单例:加载时生成单例,获取单例时不需要考虑多线程

  懒汉式单例:调用时生成单例,获取单例时如果多线程需要加synchronized锁定方法以保证单例。

  结论:

  因为在我们的开发中,如果使用单例模式,肯定会用到,废话!呵呵。所以,每次调用加个synchronized锁的效率没有不加高。因此,推荐第一种直接在私有属性中生成实例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值