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