1、下面的代码是可以运行的。

 

import java.io.*;
import java.util.*;
interface Fruit{
 public void grow();
 public void pick();
}class Apple implements Fruit{
 public void grow() {
  System.out.println("苹果在生长。。。");
  
 } public void pick() {
  System.out.println("我在在摘苹果。。。");
  
 }
 
}class Orange implements Fruit{
 public void grow() {
  System.out.println("桔子在生长。。。");
  
 } public void pick() {
  System.out.println("我们在摘桔子。。。");
  
 }
 
}
class Cherry implements Fruit{
    
       public void grow(){
               System.out.println("樱桃在生长。。。");
     }
       public void pick(){
               System.out.println("我们在摘樱桃。。。");   
  }
}class Factory{
 public static Fruit getFruitInstance(String type){
  
  Fruit f=null;
                 try{
  f=(Fruit) Class.forName(type).newInstance();
                }catch(Exception e){
                       System.out.println(e);
                }
  return f;
 }
}
// 定义一个新类,此类可以从键盘输入数据
class  Tio{
BufferedReader bf=null;
   public Tio(){
   bf=new BufferedReader(new InputStreamReader(System.in));
   }
  public String getin(){
         String str=null;
             try{
                 str=bf.readLine();
     }catch(Exception e){
          System.out.println(e);
          }
        return str;
   }
}
//读文件的类
class Init{
      public  static  Properties getInitStance()throws Exception{
            Properties ps=new Properties();
            ps.loadFromXML(new FileInputStream(new File("jack.xml")));//jack.xml是个绝对路径,可以任意写。
            return ps;
    }}
public class TestFactory {
 public static void main(String[] args)throws Exception{
                Properties  ps=new  Properties();
         ps=Init.getInitStance();
                System.out.println(ps);
                 // 加入一个可以从键盘输入数据的类
                System.out.println("输入你想要的代号:");                String code=new Tio().getin();
                
  Fruit fru=Factory.getFruitInstance(ps.getProperty(code));
                  if(fru!=null){
  fru.grow();
  fru.pick();
             }else {
                  System.out.println("没有发现这个类!");
           }
 }


2、下面是配置文件,配置文件的目的是,可以动态的修改(添加子类等等),上面的类可以直接读文件,就可以了。

 

import java.util.*;
import java.io.*;
public class DemoXML{
       public static void main(String[] args)throws Exception{
                Properties  ps=new  Properties();
               //下面是生成文件
                /*
         ps.setProperty("a","Apple");//这里的Apple是类,要是有包的话要写成:包名+类名。
                ps.setProperty("o","Orange");
                ps.setProperty("c","Cherry");
               // 下面的两个写法都可以生成jack.xml文件
               //  ps.storeToXML(new FileOutputStream("jack.xml"), "要生成的文件!") ;
                ps.storeToXML(new FileOutputStream(new File("jack.xml")), "要生成的文件!") ;
                 */
                 //下面是读文件。
                 ps.loadFromXML(new FileInputStream(new File("jack.xml")));
          System.out.println(ps) ;
   }
}