单例模式
所谓类的单例模式,就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得对象实例的方法
方式一:还没使用到就已经创建对象
步骤如下:
1.构造器私有化(防止直接new)
2.类的内部创建对象
3.向外暴露一个静态的公共方法(getInstance)
class Test{
private String name;
//通常是重量级的对象,不能浪费
private static Test test=new Test("小明")
private Test(String name){
this.name=name;
}
public static Test getInstance(){
return test;
}
}
加载类就调用构造函数,不存在线程安全问题
方式二:使用的时候创建实例
步骤如下:
1.构造器私有化
2.定义一个静态属性对象
3.提供一个公共的public的static方法,可以返回一个Test对象
class Test{
private String name;
private static Test test;
private Test(String name){
this.name=name;
}
public static Test getInstance(){
if(test==null){
test=new Test("小明");
}
return test;
}
}
只有在第一次调用getInstance()方法的时候才会调用构造函数,存在线程安全问题(同时执行getInstance()方法)