保证一个类只有一个实例一个对象,并且提供一个访问该实例的全局访问点。
由于单例模式只生成一个实例,减少了系统性能开销,当一个对象的产生需要比较多的资源时,如读取配置产生其他依赖对象时,就可以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方式来解决单例模式,可以在系统设置全局的访问点优化,还共享资源方案,例如可以在设计一个单例类负责所有数据表的映射处理
饿汉式:建成安全,效率高,但是不可以延迟加载
不管程序后面是否用到该对象,初始都要创建好私有静态的对象
1.构造器私有
2.初始就要创造对象私有静态
3.只有一个public出口
public class Test { private static Test test = new Test(); private Test() { } //未同步效率高 public static Test getTest(){ return test; } }
懒汉式:建成安全,效率不高,但是可以延迟加载
不管程序后面是否用到该对象,初始只是创建个私有静态变量当访问到时在创建对象
1.构造器私有
2.访问点用到时才可以创造对象
3.只有一个public出口
public class Test { private static Test test ; private Test() { } //已同步效率不高可延迟加载 public static synchronized Test getTest(){ if(test==null){ test=new Test(); } return test; } }