利用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(); } }
}</pre>
這就寫好了一個簡單的利用反射實現接口的方法了,只要類名按照一定的規則來命名,就可以在不用改動代碼的情況下實現程序的擴展了。
本文由用戶 pkc000pkc 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!