简单工厂模式中(选择实现类),配置文件方式
本文转自http://chjavach.iteye.com/blog/834679
简单工厂就是实现创建对象的功能,将创建对象的实现封装起来以供客户端使用,但有时一个接口的实现类有多个,如何选择创建哪个具体实例呢?可以从客户端传入参数,或用配置文件方式,在客户端传入参数中,当增加一个新的具体实例时,就要修改工厂类,以下是用配置文件形式,利用反射机制动态生成类,无需修改工厂类
/*** 工厂类,用来创造Api对象*/public class Factory {/** * 具体的创造Api的方法,根据配置文件的参数来创建接口 * @return 创造好的Api对象 */public static Api createApi(){//直接读取配置文件来获取需要创建实例的类//至于如何读取Properties,还有如何反射这里就不解释了Properties p = new Properties(); InputStream in = null;try {in = Factory.class.getResourceAsStream("FactoryTest.properties");p.load(in);} catch (IOException e) {System.out.println("装载工厂配置文件出错了,具体的堆栈信息如下:");e.printStackTrace();}finally{try {in.close();} catch (IOException e) {e.printStackTrace();}}//用反射去创建,那些例外处理等完善的工作这里就不做了Api api = null;try {api = (Api)Class.forName(p.getProperty("ImplClass")).newInstance();} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}return api;}}