【问题标题】:How to create a plugin-able application? [closed]如何创建可插件的应用程序? [关闭]
【发布时间】:2014-04-04 18:10:24
【问题描述】:

我创建了一些程序,但其中大多数都是基于“意大利面条”的方法。所有功能都在一起,如果我想添加一个新功能,我必须将它添加到核心文件中。

注意:我不是要分离设计和逻辑。

语言是 PHP。

我要问的是,通过允许其他用户(插件、组件或扩展)扩展应用程序,内容管理系统中使用了哪些方法(以及如何实现它们)

这只是设计模式的问题吗?还是文件结构?还是什么?

【问题讨论】:

  • 知道这是什么语言会很好......
  • 我不清楚这里的实际问题是什么。似乎您在广泛征求有关如何在编码中促进代码模块化和重用,或如何使用设计模式或其他内容的建议。不幸的是,我认为这个话题太宽泛了,无法在这里讨论。
  • “注意:我不是在问分离设计和逻辑。”那你在问什么?
  • 有没有人对如何用 Node JS 实现同样的事情有任何建议?有教程链接吗?

标签: php software-design application-design


【解决方案1】:

首先,您必须决定软件架构中插件行为的位置。然后你必须为这些插件定义一个接口。之后,您必须构建一个用于注册插件的接口。

Interceptor Pattern 是您在应用程序的任何位置运行注册插件的朋友。

您应该定义一个策略来优先执行队列中的插件。策略可以是FIFO (FirstInFirstOut) 或允许用户定义的订单。

此外,您应该定义一个策略来处理任何插件抛出的错误和异常,以确保系统正常运行。

这只是一个粗略的概念,但包含可插件​​应用程序的核心元素。

ZendFramework1 是 PHP 中易于访问的一个很好的例子。它为dispatch process in FrontController 使用了一个简单的插件代理。它的工作原理很好地描述了here 和很好的说明here。但是您必须知道它存在更好的方法,例如面向方面的编程 (AOP)。 PHP 中的 AOP 可以通过事件驱动编程 (EDP) 访问,也可以通过使用外部包访问,例如 AOP-PHP

【讨论】:

  • 我为此添加了一些好的方法和示例的入口点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-19
  • 2010-10-22
  • 1970-01-01
  • 1970-01-01
  • 2011-05-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多