单例模式
简介:单例模式核心构造中只包含一个被称为单例的特殊类,保证系统中该类只有一个实例。
实现方法:
public class Singleton3 {
private static class My{ //静态内部类(保证线程安全)
private static final Singleton3 single =new Singleton3(); //产生单例实例
}
private Singleton3(){
System.out.println("This is new instance"); //测试
}
public static final Singleton3 getInstance(){ //获取单例对象
return My.single;
}
}
应用实例
本实例为一个配置文件信息类的单例化
MyConfig.java
public class MyConfig {
private Map<String,String> map = new HashMap();//new FileINputStream("")
private MyConfig(){//默认构造--默认路径
try{
FileInputStream in = new FileInputStream("C:/Users/hp/workspace/java设计模式/src/ms_1单例模式/config.txt");
Properties p =new Properties();
p.load(in); //载入配置文件
//将配置信息转化成Map键值对
Set<Object> keys = p.keySet();
Iterator it = keys.iterator();
while (it.hasNext()){
String key = (String)it.next();
String value = p.getProperty(key);
map.put(key, value);
}
}
catch (Exception e) {
e.printStackTrace();
}
}
private static class My{
private static final MyConfig single = new MyConfig();//生成Config单例实例
}
public static MyConfig getInstance(){
return My.single;
}
public String getInfo (String key){
return map.get(key);
}
}
Test_Myconfig.java
public class Test_Myconfig {
public static void main(String[] args) {
// TODO 自动生成的方法存根
MyConfig mc = MyConfig.getInstance();//载入配置对象
String url = mc.getInfo("url");
String user = mc.getInfo("username");
String pwd = mc.getInfo("password");
System.out.println("url="+url);
System.out.println("user="+user);
System.out.println("pwd="+pwd);
}
}
关于单例模式的概念和应用都较为简单,明白其使用场合即可。
本页完
注:本系列博文所有内容为本人学习笔记,原文出自《Java设计模式及应用案例(第二版)》,详情课参看原著