设计模式之GoF设计模式(单例模式)
现在有一个这样的业务:一个大型应用(比如一个电商网站或后台服务)需要记录日志,日志对象需要统一管理,这样就不可能创建很多个日志对象,就需要用到单例模式。
饿汉式单例模式
类加载时创建对象
java
public class Logger {
private Logger() {}
private static Logger instance = new Logger();
public static Logger getInstance(){
return instance;
}
}
懒汉式单例模式
第一次调用getInstance才会创建对象
java
public class Logger {
private Logger() {}
private static Logger instance;
public static Logger getInstance(){
if (instance == null) {
return instance = new Logger();
}
return instance;
}
}
这种单例模式会有线程安全问题,比如A线程和B线程同时第一次调用了getInstance时会new出多个实例,不符合原本的预期,等之后学到了线程再解决该问题,有兴趣可以去问问AI或者B站找视频解决。