您的位置:首页 > 编程语言 > Java开发

[Java 15 反射机制 ] 工厂模式与 properties 读取配置文件

2014-06-14 13:55 483 查看
Factory 工厂模式,配置文件 properties 相关

package com.qunar.basicJava.javase.p15reflect.factory;

import java.io.*;
import java.util.Properties;

/**
* Author: libin.chen@qunar.com  Date: 14-6-14 11:24
*/
interface Fruit {
public void eat();
}

class Apple implements Fruit {
@Override
public void eat() {
System.out.println("吃苹果");
}
}

class Orange implements Fruit {
@Override
public void eat() {
System.out.println("吃橘子");
}
}

class Factory {
public static Fruit getInstance(String className) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
Fruit fruit = null;
fruit = (Fruit) Class.forName(className).newInstance();
return fruit;
}
}

class Init {
public static Properties getPro() throws IOException {
Properties properties = new Properties();
File file = new File("/home/work/JavaProjects/JavaLearns/BasicJava/src/main/java/com/qunar/basicJava/javase/p15reflect/factory/fruit.properties");
if (file.exists()) {
properties.load(new FileInputStream(file));
} else {
properties.setProperty("apple", "com.qunar.basicJava.javase.p15reflect.factory.Apple");
properties.store(new FileOutputStream(file), "FRUIT CLASS");
}
return properties;
}
}

public class FactoryDemo01 {
public static void main(String[] args) throws IOException, IllegalAccessException, InstantiationException, ClassNotFoundException {
Properties properties = Init.getPro();
Fruit fruit = Factory.getInstance(properties.getProperty("apple"));
if (fruit != null) {
fruit.eat();
}
Fruit fruit1 = Factory.getInstance(properties.getProperty("orange"));
if (fruit1 != null) {
fruit1.eat();
}
}
}
fruit.properties
apple=com.qunar.basicJava.javase.p15reflect.factory.Apple
orange=com.qunar.basicJava.javase.p15reflect.factory.Orange
输出 :

吃苹果

吃橘子

Process finished with exit code 0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: