- 模式理解:单例模式只希望对象只能被创建一次,就是只能new一次,就是说我们不能直接通过构造方法来创建对象,所以我们先将构造方法私有化,再在自己的类里直接new一个私有化静态对象,最后通过一个静态的方法来调取new出来的私有化静态对象,这样外部类就可以通过这个类,直接调取这个静态方法,从而获得这个静态的私有化new出来的对象。
- 运用场景:相当于一个全局变量,只不过这个变量是个对象而已,比如日志管理,数据库对象创建等
- 代码示例:
//构造一个只能实例化一次的对象:
public class Log {
//先私有化构造方法
private Log(){};
//在创建私有化静态对象
private static Log log=new Log();
//通过静态方法来获得静态对象
public static Log getLog(){
if (log!=null) {
return log;
}
return null;
}
public void show(){
System.out.println("单例模式");
}
}
//编写测试用例:
public class Main {
public static void main(String[] args) {
Log oneLog=Log.getLog();
Log twoLog=Log.getLog();
if (oneLog==twoLog) {
System.out.println("地址相同,是同一个对象");
}
}
}