ここで回避するには 2 つの方法があります。どちらを使用するかは、ソフトウェアの動作によって異なります。
1 つの方法はプラグインルートです。この ルートでは、新しいコードをアプリケーションにインストールして、関連する側面を変更できます。このルートでは、アプリケーションがインストール可能であり、サービスとして提供されるだけではありません (または、サードパーティから送信されたコードをインストールして確認する必要がある場合は、悪夢です)。
もう 1 つの方法は、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
これはすべてハリウッドの原則にも関連しており、適用するのは良いことですが、実際的でない場合もあります。