1.定义#
确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
单例模式是通过私有化构造函数实现的,私有化构造函数的类不能通过关键字new来创建,但是可以通过clone和反射机制创建。
2.类图#
3.实现#
3.1单例类##
public class Singleton
{
private static final Singleton singleton = new Singleton();
//因为需要考虑高并发下的同步问题,所以在类初始化时生成该对象。
private Singleton(){
//私有化构造函数
}
public static Singleton getSingleton(){
return singleton();
//获得单例对象
}
public static void echo(){
//具体的业务逻辑
}
}
4.单例类使用场景#
整个项目中需要一个共享访问点或共享数据;
创建一个对象需要消耗大量资源;
需要定义大量的静态常量和静态方法的环境。
5.扩展 多例模式#
使用ArrayList记录多过类的静态变量,在static静态代码块初始化。
public class Mutilton{
private static int max ton = 2;
private static ArrayList<Mutilton> mutiltonList = new ArrayList<Mutilton>();
static{
for(int i = 0; i < ton; i++){
mutiltonList.add(new Mutilton());
}
}
private Mutilton(){};
private Mutilton(String name){};
public static Mutilton getInstance(int id){
return mutiltonList.get(id);
}
public static void echo(){
//具体方法
};
}