【java设计模式学习笔记(第二页)】单例模式

单例模式

 简介:单例模式核心构造中只包含一个被称为单例的特殊类,保证系统中该类只有一个实例

实现方法:

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设计模式及应用案例(第二版)》,详情课参看原著  

猜你喜欢

转载自blog.csdn.net/qq_37422933/article/details/81318380