使用 JavaScript 脚本化 Java 应用
2010-02-24 00:00:00 来源:WEB开发网设计和实现
JDK 6 之后,对脚本的支持是对脚本引擎(Script Engine)的抽象,JDK 提供的框架设计得非常好,我们在此只是对其进行一个浅包装。具体的功能需要代理到 JDK 的实现上。
下面是插件框架的类图:
图 3. 插件框架类图
查看原图(大图)
我们现在有了对插件的描述的接口(Plugin),以及对插件管理的接口(PluginManager),并且有了具体的实现类,下面就分别描述一下:
插件接口:
定义一个插件所具备的基本功能,包括获取插件名称、获取插件描述、以及将键值对插入到插件的上下文、执行插件公开的功能等方法。
插件管理器接口:
定义管理所有插件的管理器,包括安装插件、卸载插件、激活插件、按名称获取插件等方法。
好了,这个简单的框架基本满足我们的需求。在实现中,我们可以比较简单地将 JDK 6 提供的脚本引擎做一个包装。
由于插件管理器(PluginManager)的作用范围是全局的,所以我们将其实现为一个单例的对象:
代码 1. sTodo 插件管理器
public class TodoPluginManager implements PluginManager {
private List<Plugin> plist;
private static TodoPluginManager instance;
public static TodoPluginManager getInstance() {
if (instance == null) {
instance = new TodoPluginManager();
}
return instance;
}
private TodoPluginManager() {
plist = new ArrayList<Plugin>(1);
}
public void activate(Plugin plugin) {
}
public void deactivate(Plugin plugin) {
}
public Plugin getPlugin(String name) {
for (Plugin p : plist) {
if (p.getName().equals(name)) {
return p;
}
}
return null;
}
public void install(Plugin plugin) {
plist.add(plugin);
}
public List<Plugin> listPlugins() {
return plist;
}
public void removePlugin(String name) {
for (int i = 0; i < plist.size(); i++) {
plist.get(i).getName().equals(name);
plist.remove(i);
break;
}
}
public void uninstall(Plugin plugin) {
plist.remove(plugin);
}
public int getPluginNumber() {
return plist.size();
}
}
Tags:使用 JavaScript 脚本
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接