//通过配置文件方式保存完整的类路径与反射机制结合的工厂设计模式
package org.lee.demo.factorydemo03;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Properties;
interface Fruit{
public void eat();
};
class Apple implements Fruit{
public void eat(){
System.out.println("**吃苹果");
}
};
class Orange implements Fruit{
public void eat(){
System.out.println("**吃橘子");
}
};
class Init{
public static Properties getPro(){
Properties pro=new Properties();
File file=new File("F:\\DOCUMENT\\Java实训\\D42\\FactoryClass\\fruit.properties");
try{
if(file.exists()){ //判断是否存在
pro.load(new FileInputStream(file));
}else{
pro.setProperty("apple","org.lee.demo.factorydemo03.Apple");
pro.setProperty("orange","org.lee.demo.factorydemo03.Orange");
pro.store(new FileOutputStream(file),"FRUIT CLASS");
}
}catch(Exception e){
e.printStackTrace();
}
return pro;
}
};
class Factory{
public static Fruit getInstance(String className){
Fruit fruit=null;
try{
fruit=(Fruit)Class.forName(className).newInstance();
}catch(Exception e){
e.printStackTrace();
}
return fruit;
}
};
public class FactoryDemo03{
public static void main(String args[]){
Properties pro=Init.getPro();
Fruit f=Factory.getInstance(pro.getProperty("apple"));
if(f!=null){
f.eat();
}
}
};
/*总结:以上的程序达到了配置文件与程序代码分离的目的,这种设计思路是开发的基本思路
当然,最新的设计理念是程序中直接通过注释的方式进行配置
*/
package org.lee.demo.factorydemo03;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Properties;
interface Fruit{
public void eat();
};
class Apple implements Fruit{
public void eat(){
System.out.println("**吃苹果");
}
};
class Orange implements Fruit{
public void eat(){
System.out.println("**吃橘子");
}
};
class Init{
public static Properties getPro(){
Properties pro=new Properties();
File file=new File("F:\\DOCUMENT\\Java实训\\D42\\FactoryClass\\fruit.properties");
try{
if(file.exists()){ //判断是否存在
pro.load(new FileInputStream(file));
}else{
pro.setProperty("apple","org.lee.demo.factorydemo03.Apple");
pro.setProperty("orange","org.lee.demo.factorydemo03.Orange");
pro.store(new FileOutputStream(file),"FRUIT CLASS");
}
}catch(Exception e){
e.printStackTrace();
}
return pro;
}
};
class Factory{
public static Fruit getInstance(String className){
Fruit fruit=null;
try{
fruit=(Fruit)Class.forName(className).newInstance();
}catch(Exception e){
e.printStackTrace();
}
return fruit;
}
};
public class FactoryDemo03{
public static void main(String args[]){
Properties pro=Init.getPro();
Fruit f=Factory.getInstance(pro.getProperty("apple"));
if(f!=null){
f.eat();
}
}
};
/*总结:以上的程序达到了配置文件与程序代码分离的目的,这种设计思路是开发的基本思路
当然,最新的设计理念是程序中直接通过注释的方式进行配置
*/