1. Singleton 单例设计

单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。

解决的问题就是可以保证一个类在内存中的对象唯一性。比如对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。

如何保证对象的唯一性呢?

1、不允许其他程序用new创建该类对象。
2、在本类中创建一个本类实例。
3、对外提供一个方法,让其他程序可以获取该对象。

步骤:
1、私有化该类的构造函数。
2、通过new在本类中创建一个本类的对象。
3、定义一个共有的方法,将创建的对象返回。

// 类一加载就创建对象。(饿汉式),开发的使用比较多。

class Single {
    private static Single s= new Single();
    private Single(){};
    public static Single getInstance() {
        return s;
    }
}

// 类加载到内存中,没有对象,只有调用getInstance方法才创建对象,延迟加载(懒汉式),多线程会产生问题。

class Single2 {
    private static Single2 s=null;
    private Single2(){};
    public static Single2 getInstance() {
        if(s==null) {
            s=new Single2();
        }
        return s;
    }
}
class SingleDemo{
    public static void main(String[] args) {
        Single s1=Single.getInstance();
    }
}