利用java反射機制及工廠模式增強程序的擴展性

pkc000pkc 12年前發布 | 2K 次閱讀 云計算 PHP

    前幾天寫過一個簡單的工廠類,現在加上反射效果會更好。。
    首先還是先前幾天一樣,將工廠建好。
    還是先定義接口

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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!