利用java反射机制及工厂模式增强程序的扩展性
前几天写过一个简单的工厂类,现在加上反射效果会更好。。
首先还是先前几天一样,将工厂建好。
还是先定义接口
首先还是先前几天一样,将工厂建好。
还是先定义接口
public interface A { public void a(); }扩展接口
public class A1 implements A{ public void a(){ System.out.println(1); } }
public class A2 implements A{ public void a(){ System.out.println(2); } }利用反射实现其工厂模式
import java.util.ArrayList; import java.util.List; public class Test { public static void main(String[] args) { List<Class<A>> alist = new ArrayList<Class<A>>(); for(int i=1;;i++){ try { //利用反射找到类 Class<A> a=(Class<A>) Class.forName("A"+i); //加入链表 alist.add(a); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); break; } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } } for(int i=0;i<alist.size();i++){ A a = null; try { //实例化这个类 a=alist.get(i).newInstance(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } //运行接口中的方法 a.a(); } } }
这就写好了一个简单的利用反射实现接口的方法了,只要类名按照一定的规则来命名,就可以在不用改动代码的情况下实现程序的扩展了。