前段时间在考虑自定义桌面的问题,自定义桌面意味着每个用户的桌面可能都不一样,因此如何加载用户界面存在代码,来提高性能能?以及如何提供良好的扩展性呢?

考虑了一下,采用java的ClassLoader来实现,比较好。
实现如下:

--------------------通用接口,其他的处理类都implements这个接口---------------
package com.ray.qkm.client
  public interface IAction {
     public String process();
}

-----------------------------实现类1-------------------------
package com.ray.qkm.client
public class Test1 implements IAction {
    public String process() {
        return "hello world";
    }
}

-----------------------------实现类2-------------------------
package com.ray.qkm.client
public class Test2 implements IAction {


    public String process() {
        return "hello world";
    }
}

-------------------------动态加载----------------------------
package com.ray.qkm.client

import java.util.ArrayList;
import java.util.List;

public class TestClassLoader {

/**
* @param args
* @throws ClassNotFoundException
* @throws IllegalAccessException
* @throws InstantiationException
*/
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
        //这部分的集合数据可以通过其他方式加载进来
        List cc = new ArrayList();
        cc.add("com.ray.qkm.client.Test1");
        cc.add("com.ray.qkm.client.Test2");
        cc.add("com.ray.qkm.client.Test3");
        ClassLoader loader = ClassLoader.getSystemClassLoader();
        for (int i=0; i<cc.size(); i++) {
            Class c = loader.loadClass(cc.get(i).toString());
            IAction tt = (IAction)c.newInstance();
        System.out.println(tt.process());
    }

}

}

-----------------------------------------------------------------------------
虽然很简单,但是很实用。

 

评论
发表评论

您还没有登录,请登录后发表评论

kayo
搜索本博客
我的相册
Ad1461d2-8745-3eba-ab39-18389260fce2-thumb
s1125472579
共 14 张
最近加入圈子
存档
最新评论