你的位置:首页 > 软件开发 > Java > GOF设计模式之1:单例设计模式

GOF设计模式之1:单例设计模式

发布时间:2016-04-11 00:00:08
1.单例设计模式核心作用:保证一个类只有一个实例,并且提供了访问该实例的全局访问点2.常见应用场景:window的任务管理器项目中读取配置文件一般也是一个单例模式数据库连接池的设计也是采用单例模式,因为数据库连接是一种数据库资源操作系统的文件管理系统,也是单例模式,一个操作系统只 ...

1.单例设计模式核心作用:

保证一个类只有一个实例,并且提供了访问该实例的全局访问点

2.常见应用场景:

  • window的任务管理器
  • 项目中读取配置文件一般也是一个单例模式
  • 数据库连接池的设计也是采用单例模式,因为数据库连接是一种数据库资源
  • 操作系统的文件管理系统,也是单例模式,一个操作系统只能有一个文件系统
  • Application也是单例的应用(Servlet编程或者Android的Application类)
  • Spring中,每个bean默认也是单例的,这样的有点儿事Spring容器可以管理
  • 在Servlet编程中每个Servlet也是单例的
  • 在Spring MVC和Struts1框架中控制器对象也是单例

3.单例模式的优点

  • 由于单例模式只生产一个对象,减少了系统开销,当一个对象的产生需要的资源比较多的时候,比如读取配置文件、产生其它依赖对象时,则可以在应用启动的时候直接产生一个单例对象,然后永久驻存内存的方式来解决。
  • 单例模式可以在系统设置全局访问点,优化共享资源的访问。例如可以设计一个单例类,负责所有数据表的映射。

4.常见5中单例模式的实现方式:

主要

饿汉式:线程安全,调用效率高。但是不能延时加载

懒汉式:线程安全,调用效率不高。但是可以延迟加载

其它:

双重检锁式:由于JVM底层内部模型的原因,偶尔会出现问题,不建议使用

静态内部类式:线程安全,调用效率高,而且可以延迟加载

枚举单例:线程安全,调用效率高,不可延迟加载

饿汉式的示例代码:

public class Singleton01 {  //类初始化的时候,立即加载这个对象(没有延时加载的优势)。加载类时,是线程安全的  private static Singleton01 instance = new Singleton01();  private Singleton01(){}  //方法没有同步调用效率高  public static Singleton01 getInstance(){    return instance;  }}

原标题:GOF设计模式之1:单例设计模式

关键词:设计模式

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。