标签:style blog http color java 使用 os 文件
1、定义
确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例
2、通用类图
Singleton类称为单例类,通过使用private的构造函数确保了在一个应用中只产生一个实例,并且是自行实例化的(在Singleton中自己使用new Singleton())。通用源码如下所示:
饿汉模式:
package singleton; public class Singleton { private static final Singleton singleton=new Singleton(); //限制产生多个对象 private Singleton(){ } //通过该方法获得实例对象 public static Singleton getSingleton(){ return singleton; } //类中其他方法,尽量使用static public static void doSomething(){ } }懒汉模式:
package singleton; public class Singleton1 { private static Singleton1 singleton=null; //限制产生多个对象 private Singleton1(){ } //通过该方法获得实例对象 public static synchronized Singleton1 getSingleton(){ if(singleton==null){ singleton=new Singleton1(); } return singleton; } }
4、最佳实践
一般是管理全局的,共享的资源
1、在spring中每个bean默认都是单例的。但是可以设置成非单例模式
2、数据库连接
3、线程池
4、设置网站访问计数器,可以使用单例模式。如果我们一个单例对象在内存中长久不用,JVM就任务这个对象是一个垃圾,在CPU资源空闲的情况下该对象会被清理掉,下次再调用时就需要重新产生一个对象。计数器可能有出现恢复原状的情况,应用就会出现故障。解决方式:(在java1.2版本后已经改掉了)
- 由容器管理单例的生命周期,javaEE容器或者框架级容器(Spring)可以让对象长久驻留内存。
- 状态随时记录,可以使用异步记录方式,或者使用观察者模式,记录状态的改变,写入文件或数据库。确保即使单例对象重新初始化也可以从资源环境获得销毁前的数据,避免应用数据丢失。
设计模式之单例模式(singleton),布布扣,bubuko.com
标签:style blog http color java 使用 os 文件
原文地址:http://www.cnblogs.com/limiracle/p/3909444.html