设计模式之单例模式详解 单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。 单例模式的实现主要是通过以下两个步骤: 1. 将该类的构造方法定义为私有方法,这样其他处的代码就无法通过调用该类的构造方法来实例化该类的对象,只有通过该类提供的静态方法来得到该类的唯一实例; 2. 在该类内提供一个静态方法,当我们调用这个方法时,如果类持有的引用不为空就返回这个引用,如果类保持的引用为空就创建该类的实例并将实例的引用赋予该类保持的引用。 单例模式的应用场景有很多,例如: * 在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。 * 在我们的windows桌面上,我们打开了一个回收站,当我们试图再次打开一个新的回收站时,Windows系统并不会为你弹出一个新的回收站窗口。这就是一个典型的单例模式运用。 * 网站的计数器,一般也是采用单例模式实现,如果你存在多个计数器,每一个用户的访问都刷新计数器的值,这样的话你的实计数的值是难以同步的。 * 多线程的线程池的设计一般也是采用单例模式,这是由于线程池需要方便对池中的线程进行控制。 * 对于一些应用程序的日志应用,或者web开发中读取配置文件都适合使用单例模式,如HttpApplication就是单例的典型应用。 单例模式的优点有: * 在内存中只有一个对象,节省内存空间; * 避免频繁的创建销毁对象,可以提高性能; * 避免对共享资源的多重占用,简化访问; * 为整个系统提供一个全局访问点。 单例模式的缺点有: * 不适用于变化频繁的对象; * 滥用单例将带来一些负面问题,如为了节省资源将数据库连接池对象设计为的单例类,可能会导致共享连接池对象的程序过多而出现连接池溢出; * 如果实例化的对象长时间不被利用,系统会认为该对象是垃圾而被回收,这可能会导致对象状态的丢失。 单例模式的实现方式有很多,例如饿汉式和懒汉式。饿汉式单例是在类加载时就实例化对象,而懒汉式单例是在第一次调用时实例化对象。每种方式都有其优缺点,需要根据实际情况选择合适的实现方式。
- 粉丝: 430
- 资源: 487
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助