前段时间在考虑自定义桌面的问题,自定义桌面意味着每个用户的桌面可能都不一样,因此如何加载用户界面存在代码,来提高性能能?以及如何提供良好的扩展性呢?
考虑了一下,采用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());
}
}
}
-----------------------------------------------------------------------------
虽然很简单,但是很实用。
分享到:
相关推荐
- 当一个类加载器被请求加载某个类时,它会首先尝试让其父加载器加载该类。只有当父加载器无法加载时,才会由请求的加载器自己加载。 **3. == 和 equals 的区别** - `==`:用于比较两个对象的引用是否指向同一个...
- **双亲委派模型**: 当一个类加载器收到加载类的请求时,首先将加载任务委托给父类加载器尝试完成;只有当父类加载器无法完成时才会自己尝试加载。 - **层次结构**: - **Bootstrap ClassLoader**(启动类加载器):...
当一个 web 请求来了以后 View 接收这个请求,随即把请求转发给 Control 进行处理,Control 通过分析请求的类型等信息决定加载哪些 Model,当 Model 加载完成以后 Control 通知 Model 已经加载完毕,这是 View 就去...
通过定义不同的渲染器,你可以根据数据模型动态地改变视图的显示方式。 4. **ActiveAndroid**: ActiveAndroid 是一个轻量级的ORM(对象关系映射)库,允许开发者以更面向对象的方式操作数据库。通过简单的注解,...
这些都预示着我们进入了一个新的互联网阶段web 2.0,它是相对web 1.0的新的一类互联网应用的总称,是一次从核心内容到外部应用的革命[10]。这个阶段发展迅速,互联网应用趋于多样化,其中变化最大的是由web 1.0网站...
安卓上用于加载的Webview视图窗口只是作为类浏览器而存在,在安卓上更是只能同时运行一个Webview。(2)跨域数据交互问题。不同的Webview之间无法共享数据。(3)页面自适应问题。页面难以兼容适应不同分辨率的设备...
18. 数据库实施:数据库实施阶段包括建立数据库、加载数据和系统调试,不包括扩充功能。正确答案:B。 19. 访问修饰符:private表示私有,只能在类内部访问;protected表示保护,允许类内部和子类访问;public表示...
RFC2475 分类业务的体系结构 RFC2492 IPv6 通过ATM网络 RFC2495 有关 DS1,E1,DS2,E2接口类型的管理部件的定义 RFC2508 低速串行链路下IP/UDP/RTP数据包头的压缩 RFC2511 Internet X.509认证请求消息格式 RFC2516 在...
RFC2475 分类业务的体系结构 RFC2492 IPv6 通过ATM网络 RFC2495 有关 DS1,E1,DS2,E2接口类型的管理部件的定义 RFC2508 低速串行链路下IP/UDP/RTP数据包头的压缩 RFC2511 Internet X.509认证请求消息格式 RFC2516 在...
RFC2046 多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第二部分:媒体类型 RFC2053 AM (美国)域 RFC2078 通用安全服务应用接口(GSS-API) V2 RFC2079 X.500 属性类型和对象类别去掌握统一资源定位器...
- **知识点**:数据库实施阶段的主要任务包括建立数据库、加载数据、系统调试等,而“扩充功能”通常属于后续的维护或升级阶段。 ### 10. 主频的概念 - **知识点**:主频指的是CPU的时钟频率,用MHz(兆赫兹)表示...