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

来源:互联网 发布:win10电脑无法连接网络 编辑:程序博客网 时间:2024/06/06 07:03

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.Appleorange=com.qunar.basicJava.javase.p15reflect.factory.Orange
输出 :

吃苹果
吃橘子


Process finished with exit code 0

0 0