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();
}
}
}