设计模式--单例模式(四)单例模式实例配置 Properties
本文是设计模式学习笔记的第二篇文章,主要分析的是单例模式。包括懒汉式,饿汉式,登记式,以及懒汉式的改进型,还有一个关于读取propertoes配置文件的实例。这是第四节,这次我们来看一下如何用单例模式配置配置文件。Properties 基本知识 如果不熟悉 java.util.Properties 类,那么现在告诉您它是用来在一个文件中存储键-值对的,其中键和值是用等号分隔的,如清单 1 所示。 清单 1. 一组属性示例 foo=barfu=baz 将清单 1 装载到 Properties 对象中后,您就可以找到两个键( foo 和 fu )和两个值( foo 的 bar 和 fu 的 baz )了。这个类支持带 /u 的嵌入 Unicode 字符串,但是这里重要的是每一项内容都当作 String 。 清单 2 显示了如何装载属性文件并列出它当前的一组键和值。只需传递这个文件的 InputStream 给 load() 方法,就会将每一个键-值对添加到 Properties 实例中。然后用 list() 列出所有属性或者用 getProperty() 获取单独的属性。 清单 2. 装载属性 import java.util.*;import java.io.*;public class LoadSample { public static void main(String args[]) throws Exception { Properties prop = new Properties(); FileInputStream fis = new FileInputStream("sample.properties"); prop.load(fis); prop.list(System.out); System.out.println("/nThe foo property: " + prop.getProperty("foo")); }} 运行 LoadSample 程序生成如清单 3 所示的输出。注意 list() 方法的输出中键-值对的顺序与它们在输入文件中的顺序不一样。 Properties 类在一个散列表(hashtable,事实上是一个 Hashtable 子类)中储存一组键-值对,所以不能保证顺序。现在对properties有了初步的了解,现在我们把它和单例模式结合起来。/** * Properties配置文件加载 * MySingleton4 */public static void myprint4(){System.out.println("---------------单例模式实例--------------");System.out.println("第一次取得实例");MySingleton4 s1 = MySingleton4.getInstance();System.out.println(s1.getPuser());System.out.println(s1.getPpassword());System.out.println("第二次取得实例");MySingleton4 s2 = MySingleton4.getInstance();System.out.println(s2.getPuser());System.out.println(s2.getPpassword());if(s1==s2){System.out.println(">>>>>s1,s2为同一实例(改进懒汉式)<<<<<");}System.out.println();}/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stub//懒汉式//myprint();//饿汉式//myprint2();//懒汉式改进//myprint2a();//登记式//myprint3();//实例myprint4();}
打印结果为:
---------------单例模式实例--------------
第一次取得实例
-->没有实例,调用内部类方法返回实例
---->内部类创建实例方法被调用
-->私有化构造函数被调用,创建实例中
-->properties文件加载完成
-->properties文件属性读取完成
---->内部类方法调用结束
-->返回实例
admin
123456
第二次取得实例
-->返回实例
admin
123456
>>>>>s1,s2为同一实例(改进懒汉式)<<<<<
相关链接:
设计模式--单例模式(一)懒汉式和饿汉式设计模式--单例模式(二)登记式设计模式--单例模式(三)改进型懒汉式设计模式--单例模式(四)单例模式实例配置 Properties