-------------------------------------------------------------------- 配置文件config.properties的内容 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(); } } |
|