首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java开发具有插件功能的应用程序

Java开发具有插件功能的应用程序
EN

Stack Overflow用户
提问于 2013-05-23 11:37:57
回答 2查看 138关注 0票数 1

我目前正在开发一个Java应用程序,该应用程序包含一组核心功能,必须将其扩展到几个不同的目的(~10个不同的用途),因此,想到的最佳解决方案是在需要时添加插件来扩展功能,而不是为每个功能创建不同的代码库。

这样做的最佳方法是简单地创建一个接口并在相关插件中扩展它吗?

代码语言:javascript
复制
public coreCode()
{
    // Core
    doThis();
    doThat();
    // Call plugin code
    plugin.doStuff();
}

// Plugin
public interface PluginInterface()
{
    doStuff();
    ...
}

我已经研究过JSF等,但是由于工作的限制(不是授权的等等),它们不幸地不是一个可行的选择。

-编辑--

它大致应该是这样的:

目的A、B和C需要一组特定的功能,因此为它们开发了plugin1,并与它们捆绑在一起,然后部署。目的D和E需要一个不同的集合,因此plugin2是为他们开发,捆绑和部署。等。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-23 11:41:48

对于插件,您可以创建一个特定目录,其中包含实现特定接口的类文件或扩展某个抽象类。然后您可以创建这些类的新实例,并查看它们是否是您希望它们成为的抽象类/接口的实例,然后列出它们的特定列表,并赋予用户启用/禁用它们的能力。如果启用了它们,则可以强制转换和执行它们。

票数 1
EN

Stack Overflow用户

发布于 2013-05-23 13:27:45

我建议您研究一下OSGi --一种动态组件模型,在这种模型中,应用程序被开发和部署为一组包/插件,可以添加、启动、停止和远程删除,甚至不需要重新启动核心/主机应用程序。

您可以在Eclipse平台(OSGi的最佳实现之一)上对您的应用程序建模,并创建一个无头(没有任何UI)的核心RCP应用程序。然后,所有其他应用程序功能都将被开发为插件,这些插件可以打包或添加到您的核心RCP应用程序中,您喜欢的任何组合(或者您的客户可能会请求),即使在应用程序运行之后也是如此。

如果您的应用程序具有UI,并且喜欢Eclipse的外观和功能,如“新项目”向导、使用视图来更改视图的布局、工作区、上下文敏感的帮助功能以及通过插件存储库进行跨网络更新等,那么这绝对值得考虑。查看一下这个RCP常见问题页面,看看它是否适合您的需要。

唯一让开发人员望而却步的是,它有一个陡峭的学习曲线。依赖关系总是用XML声明的,在代码中,所有组件都是解耦的,因此您总是发现自己更多地与框架交互。

使用JFace构建UI组件给模型和视图之间的分离带来了很大的压力。因此,尽管所有这些都转化为良好的应用程序设计,但如果对框架来说是新的,则不允许快速开发应用程序。它的大部分其他复杂性来自于RCP有这么多东西可以提供的事实。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16712945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档