这里有两种方法,采用哪一种取决于您的软件的行为方式。
一种方法是plugin http://www.martinfowler.com/eaaCatalog/plugin.html route http://www.google.com/search?q=creating+an+API+plugin,人们可以安装新代码进入应用程序修改相关方面。此路线要求您的应用程序是可安装的,而不仅仅是作为服务提供(否则您安装并检查第三方发送的代码,将是一场噩梦)。
另一种方法是提供API http://www.google.com/search?q=creating+web+API, 哪个行被相关方召集并使应用程序将控制权转移到位于其他地方的代码(如 Facebook 应用程序),或使应用程序按照 API 命令启用开发人员的方式执行操作(如 Google 地图)。
尽管机制有所不同,并且实际实现它们的方式也有所不同,但无论如何,您都必须定义
- 我会给用户什么自由?
- 我将为程序员提供哪些定制应用程序的服务?
最重要的是:
- 如何在我的代码中启用此功能,同时保持安全和稳健。这通常是通过对代码进行沙箱处理、验证输入并可能向用户提供有限的功能来完成的。
在这种情况下,挂钩是代码中的预定义位置,用于调用所有已注册插件的挂钩函数(如果定义),从而修改应用程序的标准行为。例如,如果您有一个渲染背景的函数,您可以
function renderBackground() {
foreach (Plugin p in getRegisteredPlugins()) {
if (p.rendersBackground) p.renderBackground();
}
//Standard background code if nothing got executed (or it still runs,
//according to needs)
}
在这种情况下,您有插件可以实现的“renderBackground”挂钩来更改背景。
通过 API 方式,用户应用程序将调用您的服务来渲染背景
//other code
Background b = Salesforce2.AjaxRequest('getBackground',RGB(255,10,0));
//the app now has the result of calling you
这也都与好莱坞原则 http://en.wikipedia.org/wiki/Hollywood_Principle,这是一个很好的应用,但有时并不实用。