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();
}
}