appSet = am.ClassB
-------------------------------------------------------------------
package com;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
/**
*需求:实现简单工厂模式
*实现要点:通过读取配置文件的信息动态创建对象
*实现步骤:1.编写properties文件存储配置信息
* 2.编写产品接口
* 3.编写两个实现接口的类
* 4.编写简单工厂生产产品
* 5.编写测试类
*/
//产品接口
interface InterfaceBase{
void fun1();
void fun2();
}
//第一个实现接口的类
class ClassA implements InterfaceBase{
public void fun1(){
System.out.println("这是ClassA的fun1方法");
}
public void fun2(){
System.out.println("这是ClassA的fun2方法");
}
}
//第二个实现接口的类
class ClassB implements InterfaceBase{
public void fun1(){
System.out.println("这是ClassB的fun1方法");
}
public void fun2(){
System.out.println("这是ClassB的fun2方法");
}
}
//编写工厂类
class SimpleFactory{
//读取配置文件的信息
private static String getConfigInfo(){
String typeName = "";
Properties p = new Properties();
try {
p.load(new FileInputStream("config.properties"));
typeName = p.getProperty("appSet");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return typeName;
}
//工厂方法,创建不同的产品,但产品有相同的规范
public static InterfaceBase createProduct(){
InterfaceBase obj = null;
String className = SimpleFactory.getConfigInfo();
try {
obj = (InterfaceBase)Class.forName(className).newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return obj;
}
}
//测试工厂类
public class Example03 {
public static void main(String[] args) {
InterfaceBase obj = SimpleFactory.createProduct();
obj.fun1();
obj.fun2();
}
}