单例模式
代码
package utils;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class ConfigManager {
private static ConfigManager configManager;
private Properties properties;
private ConfigManager() {
String configFile = "database.properties";
InputStream in = ConfigManager.class.getClassLoader().getResourceAsStream(configFile);
properties=new Properties();
try {
properties.load(in);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static ConfigManager getInstance(){
if(configManager==null){
configManager=new ConfigManager();
}
return configManager;
}
public String getString(String key) {
return properties.getProperty(key);
}
}
饿汉单例模式
private static ConfigManager configManager=new ConfigManager();
public static ConfigManager getInstance(){
return configManager;
}
懒汉单例模式
public static synchronized ConfigManager getInstance(){
if(configManager==null){
configManager=new ConfigManager();
}
return configManager;
}
懒汉单例模式
双重锁定
public static synchronized ConfigManager getInstance(){
if(configManager==null){
synchronized (ConfigManager.class){
if(configManager==null){
configManager=new ConfigManager();
}
}
}
return configManager;
}