Java 利用反射构建工厂类并实现调用配置化 

package Test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

interface Animal{
	public abstract void run();
}

class Dog implements Animal{

	@Override
	public void run() {
		System.out.println("Dog");
	}
	
}

class Pig implements Animal{

	@Override
	public void run() {
		System.out.println("Pig");
	}
	
}

class Factory{
	
	public static Animal getInstance(String className){
		Animal a = null;
		try {
			a = (Animal) Class.forName(className).newInstance();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return a;	
	}
	
}

class init{
	public static Properties getPro() throws FileNotFoundException, IOException{
		Properties pro = new Properties();
		File f = new File("animal.properties");
		
		if(f.exists()){
			pro.load(new FileInputStream(f));
		}else{
			pro.setProperty("dog", "Test.Dog");
			pro.setProperty("Pig", "Test.Pig");
			pro.store(new FileOutputStream(f), "ANIMAL CLASS");
		}
		return pro;
		
	}
}

public class util {
	
	public static void main(String[] args) throws FileNotFoundException, IOException {
		
		Properties pro = init.getPro();
		Animal a = Factory.getInstance(pro.getProperty("dog"));
		if(a != null){
			a.run();
		}
		
	}

}

 

分类:

技术点:

相关文章: