您的位置:首页 > 运维架构

反射+工厂模型+Properties

2015-08-12 16:16 405 查看
通过Properties类从文件中读取配置信息,从而可以避免大量的代码修改。

1、新建fruit.properties(文件名任意,路径在项目默认目录下),并写入内容:

apple=properties.Apple
banana=properties.Banana


2、编写Fruit接口:

public interface Fruit {
void eat();
}


3、Fruit接口的实现类:

public class Banana implements Fruit{

@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("Banana!");
}

}


public class Apple implements Fruit{

@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("Apple!");
}

}


4、FruitFactory工厂:

public class FruitFactory {
public static Fruit getFruitInstance(String className) {
Fruit fruit = null;
try {
fruit = (Fruit) Class.forName(className).newInstance();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return fruit;
}
}


5、主类:

public static void main(String[] args) {
FruitFactory.getFruitInstance(Apple.class.getName()).eat();
Properties pro = init();
// Properties根据键值对获取信息
Fruit f = FruitFactory.getFruitInstance(pro.getProperty("banana"));
f.eat();
System.out.println(pro.getProperty("iapple"));
}

static Properties init() {
// 新建Properties对象
Properties pro = new Properties();
File file = new File("fruit.properties");
if (file.exists()) {
try {
pro.load(new FileInputStream(file));
pro.setProperty("iapple", "properties.iApple");
// 根据键值对将数据写入文件中
pro.store(new FileOutputStream(file), "iapple");
// pro.clear();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
pro.setProperty("apple", "properties.Apple");
// pro.loadFromXML(new FileInputStream(""));
}
return pro;
}


运行结果:

Banana!
properties.iApple

可以用Properties#store(InputStream in,String key)将数据写入指定文件中。用Properties#clear()清除文件中所有数据。

通过Properties获取JVM配置信息:

1 Properties pro= System.getProperties();
2 pro.list(System.out);


以键值对形式显示Properties文件中所有配置信息:

void showDetail() {
Properties pro = System.getProperties();
pro.list(System.out);
Enumeration<?> enu = pro.propertyNames();
while (enu.hasMoreElements()) {
String key = (String) enu.nextElement();
String value = pro.getProperty(key);
System.out.println("key:" + key + "  value:" + value);
}
}


java中Properties类的操作:/article/5171942.html

java读取Properties文件的六种方法:http://blog.csdn.net/Senton/article/details/4083127
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: