如何设计可扩展的软件(插件架构)? [关闭]

2024-03-06

我需要一些资源来讨论如何设计可扩展的软件,即以便其他人可以编写为其添加功能的附加组件/插件。

你有什么建议吗?有没有讨论这个主题的书?
我更喜欢简短而切题的内容;一些理论和一堆具体例子。

我不针对特定的语言,我希望能够理解核心思想,以便我可以用任何语言实现它。

出于同样的原因,我不喜欢使用其他人构建的框架来执行此操作(除非该框架不是非常高级,即不隐藏too很多),目前我只想在这个主题上进行自我教育并尝试各种方法来实现它。另外,框架通常假设用户了解该主题。

UPDATE

我不是在询问 OOP 或允许继承我的类。我正在谈论设计一个将部署在系统上的应用程序,以便在部署后可以通过第三方附加组件对其进行扩展。

例如,Notepad++ 有一个插件架构,您可以将 .dll 文件放置在插件文件夹中,并且它向应用程序添加了不存在的功能,例如颜色选择、代码片段插入或许多其他功能(广泛的功能)。


如果我们谈论 .NET,请尝试使用 VBScript 编写 .NET 应用程序脚本 http://www.codeproject.com/KB/system/mScriptable.aspx在 CodeProject 上。那里有很多具体的例子。

以下是实施各种应用程序扩展技术的站点

  • ClearScript - 使 V8、VBScript 和 JScript 可用于 .NET 应用程序 http://clearscript.codeplex.com
  • CS-Script - C# 脚本引擎 http://www.csscript.net/
  • 使用 C# 的插件架构 http://www.codeproject.com/KB/cs/c__plugin_architecture.aspx
  • Opinio 插件架构 http://objectplanet.com/opinio/userguide/index.htm?page=plugin_architecture.html
  • 关于 Eclipse 插件架构的注释 http://www.eclipse.org/articles/Article-Plug-in-architecture/plugin_architecture.html
  • 适合初学者的插件架构框架 http://www.codeguru.com/cpp/misc/misc/plug-insadd-ins/article.php/c3879
  • Gecko 插件架构 https://developer.mozilla.org/en/Plugin_Architecture
  • Fungimol 插件架构 http://www.fungible.com/fungimol/plugin.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何设计可扩展的软件(插件架构)? [关闭] 的相关文章

  • “单词的正则表达式”(语义替换)-任何示例语法和库吗?

    我正在寻找在给定过程语言的情况下对单词而不是字符进行正则表达式样式转换的常用技术的语法示例 例如 为了追踪复制 人们可能想要创建一份具有相似含义但具有不同单词选择的文档 我希望能够简洁地定义这些可以应用于文本流的可能的转换 例如 快速地no
  • 是否有模型 MultiField(在 Django 中组合数据库模型字段的任何方法)?或者为什么这不是一个有用的概念?

    在构建 Django 应用程序时 我们接触到了 表单 MultiValueField and MultiWidget 它们似乎是一种有趣的方法来组成各自的基类 从而提供更多的模块化性 然而 现在在我们看来 真正能让这两个人大放异彩的作品将是
  • 有没有人有 Ruby 和 Rake 的 Notepad++ 函数列表插件的解析规则

    我使用 Notepad 编辑 rake 文件 并且希望能够使用函数列表插件 我无法在线找到任何解析规则 并且 语言解析规则 对话框没有非常清晰的记录 我正在将方法解析到以下列表中 但还想显示任务 Function Begin t def t
  • 负整数的基数排序

    我正在尝试对整数 包括负整数 实现基数排序 对于非负整数 我计划为数字0 9创建一个10个队列的队列 并实现LSD算法 但我对负整数有点困惑 我现在的想法是继续为它们创建另一个包含 10 个队列的队列 并分别对它们进行排序 然后在最后 我将
  • 如何访问android库项目中的资源

    我正在构建一个 android 库项目 它内部需要一些静态资源 图像 xml 等 然后我想知道我可以把这些资源放在哪里以及如何访问它们 既然我把资源放到了assets文件夹 我使用 AssetManager 来访问资源 public cla
  • 在数字集合中查找最接近的匹配[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的
  • 动态加载具有某些其他 dll 依赖项的 .NET 程序集

    我想为我的应用程序创建一个插件引擎 但我有一个问题 如何加载对其他程序集有一定依赖的 Net 程序集 实际上是我的插件 例如我想加载A DLL and A DLL需要B dll or C dll等等来运行 这A dll有两种方法 例如A a
  • 优雅降级 - 何时考虑

    在为使用 AJAX 的应用程序设计和构建 UI 时 您何时考虑优雅降级 对于禁用 JavaScript 或正在使用屏幕阅读器的用户 最后 网站的 AJAX 版本完全完成后 在每个发展阶段 I don t 还有别的事 这些日子 渐进增强 ht
  • 使用 jQuery 插件及其依赖项的指南 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 jQuery 插件通常依赖于外部文件 jQuery 库 样式表 CSS 图像 其他插件等 使用 和编写 解决依赖关系放置问题的 jQuery 插
  • 在 Grails 中创建一个新的资源包?

    我想创建另一个资源包来组织我的 Grails 应用程序 Grails 提供了一个 messages 资源包 我需要创建一个 myApp 资源包 如何创建新的资源包并使用 g message GSP 标记读取其属性 你必须创建一个beangr
  • 在哪里可以找到 IBM Worklight v5.0.0.3 的 Worklight Studio 插件?

    我正在尝试查找 IBM Worklight Studio v5 0 0 3 Eclipse 插件 Eclipse Marketplace 仅提供最新版本 5 0 6 IBM 似乎没有公开提供 IBM Worklight Studio Ecl
  • 如何在 Perforce 树中查找未跟踪的文件? (svn状态的模拟)

    有人有脚本或别名来查找 Perforce 树中未跟踪 实际上 未添加 的文件吗 编辑 我更新了对此已接受的答案 因为看起来 P4V 在 2009 年 1 月的版本中添加了对此的支持 EDIT 请用p4 status现在 不再需要跳圈了 参见
  • 如果找不到指定的图像文件,显示默认图像的最佳方式?

    我有一个普通的电子商务应用程序 我将 ITEM IMAGE NAME 存储在数据库中 有时经理会拼错图像名称 为了避免 丢失图像 IE 中的红色 X 每次显示产品列表时 我都会检查服务器中是否有与该产品相关的图像 如果该文件不存在 我会将其
  • 如何使用类路径位置

    为了解决这个问题 我到处寻找 但找不到解决方案 问题如下 我在 Tomcat 7 服务器上构建了一个 Spring mvc web 应用程序 准确地说是 7 0 12 并且我在获取
  • 如何编写 sbt 插件来通过代理启动应用程序

    我想在开源之前为我的项目创建一个 sbt 插件 该项目在应用程序运行开始时附加一个 Java 代理 以对其进行各种类型的分析 代理写出文本文件以供以后处理 我希望能够编写一个 sbt 插件 有一个替代方案run called runWith
  • 使用自定义 cordova 插件未找到类异常

    我正在开发一个打印应用程序 它使用自定义 API 通过 USB 访问打印机 因此我需要一个自定义 Cordova 插件 我开始开发它 这是一个非常好的挑战 但目前也非常令人沮丧 因为我不明白为什么我的插件不能正确使用 事情是 1 插件安装正
  • 用矩阵变换 3D 向量的方法

    我一直在阅读一些关于用矩阵转换 Vector3 的文章 并且正在努力深入研究数学并自己编码 而不是使用现有代码 无论出于何种原因 我的学校课程从未包含矩阵 所以我正在填补我的知识空白 值得庆幸的是 我认为我只需要一些简单的东西 背景是我正在
  • 用于生成 ISO 文件的 Maven 插件

    有没有可以生成ISO镜像的maven插件 我需要获取一些模块的输出 主要是包含 jar 的 zip 文件 并将它们组合成一个 ISO 映像 Thanks 现在有一个 ISO9660 maven 插件可以完成这项工作 https github
  • 如何在 gradle findbugs 插件中将报告的错误打印到控制台?

    我正在使用 Gradle FindBugs 插件 如何将报告的错误打印到控制台 PMD 插件有一个 consoleOutput 属性 FindBugs 是否有类似的属性 如你看到的here https gradle org docs cur
  • 如何为所有语言创建字母数字正则表达式?

    我今天遇到了这个问题 此正则表达式仅匹配英语 a zA Z0 9 如果我需要支持这个世界上的任何语言 我应该编写什么正则表达式 如果您使用字符类简写和 Unicode 识别正则表达式引擎 您就可以做到这一点 这 wclass 匹配 单词字符

随机推荐