WEB开发网
开发学院软件开发Java 使用 JavaScript 脚本化 Java 应用 阅读

使用 JavaScript 脚本化 Java 应用

 2010-02-24 00:00:00 来源:WEB开发网   
核心提示: 设计和实现JDK 6 之后,对脚本的支持是对脚本引擎(Script Engine)的抽象,使用 JavaScript 脚本化 Java 应用(3),JDK 提供的框架设计得非常好,我们在此只是对其进行一个浅包装,在实现中,我们可以比较简单地将 JDK 6 提供的脚本引擎做一个包装,具体的功能需要

设计和实现

JDK 6 之后,对脚本的支持是对脚本引擎(Script Engine)的抽象,JDK 提供的框架设计得非常好,我们在此只是对其进行一个浅包装。具体的功能需要代理到 JDK 的实现上。

下面是插件框架的类图:

图 3. 插件框架类图
使用 JavaScript 脚本化 Java 应用

查看原图(大图)

我们现在有了对插件的描述的接口(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(); 
  } 
 
} 

上一页  1 2 3 4 5 6 7 8  下一页

Tags:使用 JavaScript 脚本

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接