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