单例设计模式
解决的问题:保证一个类在内存中对象唯一性。
比如:多程序读取一个配置类时,建议配置文件分装成对象。会方便操作其中的数据,又要保证多个配置文件读到的是同一个配置文件,就需要改配置文件在内存中是唯一的。
如何保证对象唯一性呢?
思路:
1、不让其他程序创建该类对象;
2、在本类中创建一个本类对象;
3、对外提供方法,让其他程序获取这个对象;
具体实现步骤:
1、其他程序都是通过调用类的构造方法来创建对象的,只要将类的构造方法私有化,就可保证其他程序无法创建对象。
2、就在类中创建一个本类的对象;
3、定义一个方法,返回这个对象,让其他程序可以通过该方法获得这个对象。
代码体现:
1、私有化构造方法;
2、创建私有并静态的本类对象;
3、定义共有并静态的方法,返回该对象。
-----------------------------------------------------------------------------
/**
* 单例模式:饿汉式
*/
public class Configuration {
private Configuration() {}
private static Configuration configuration = new Configuration();
public static Configuration getInstance(){
return configuration;
}
}
-----------------------------------------------------------------------------
/**
* 单例模式:懒汉式
*/
public class Config {
private Config(){}
private static Config config = null;
public static Config getInstance(){
if(config==null){
config = new Config();
}
return config;
}
}
-----------------------------------------------------------------------------