工廠設計模式最大的好處是可以在應用進行解耦合操作
此處工廠設計模式結合屬性文件的工廠模式,不用傳入完整的包.類名稱,通過屬性文件的形式配置所需要的子類信息,用戶可以知道一個接口有多少子類可以使用。
代碼如下:
package lovechao.project;
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 Factory{//工廠
public static Fruit getInstance(String className){
Fruit fruit=null;
try {
fruit=(Fruit) Class.forName(className).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return fruit;
}
}
class Init{//初始化
public static Properties getPro(){
Properties pro=new Properties();
File f=new File("d:\\fruit.properties");
try {
if(f.exists()){
pro.load(new FileInputStream(f));
}else{
pro.setProperty("apple", "lovechao.project.Apple");
pro.setProperty("orange", "lovechao.project.Orange");
pro.store(new FileOutputStream(f), "FRUIT CLASS");
}
} catch (Exception e) {
e.printStackTrace();
}
return pro;
}
}
public class FactoryDemo {
public static void main(String args[]){
Properties pro=Init.getPro();
Fruit f=Factory.getInstance(pro.getProperty("apple"));
if(f!=null){
f.eat();
}
}
}