利用java反射机制及工厂模式增强程序的扩展性

12年前
    前几天写过一个简单的工厂类,现在加上反射效果会更好。。
    首先还是先前几天一样,将工厂建好。
    还是先定义接口
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();        }       }    }

 

这就写好了一个简单的利用反射实现接口的方法了,只要类名按照一定的规则来命名,就可以在不用改动代码的情况下实现程序的扩展了。