インターセプターパターン

迎撃機の例

ソフトウェア開発分野において、インターセプターパターンとは、ソフトウェアシステムやフレームワークが通常の処理サイクルを変更または拡張する手段を提供したい場合に用いられるソフトウェア設計パターンです。例えば、Webサーバーの典型的な処理シーケンス(簡略化)は、ブラウザからURIを受け取り、それをディスク上のファイルにマッピングし、ファイルを開いてその内容をブラウザに送信するというものです。これらのステップはいずれも、例えばURIをファイル名にマッピングする方法を変更したり、ファイルの内容を処理する新しいステップを挿入したりすることで、置き換えたり変更したりできます。

このパターンの重要な側面は、変更が透過的であり、自動的に適用されることです。本質的には、システムの残りの部分は何かが追加または変更されたことを知る必要がなく、以前と同じように動作し続けることができます。これを可能にするには、拡張用の定義済みインターフェースを実装する必要があり、インターセプターを登録する何らかのディスパッチメカニズム(これは動的、実行時、または静的(例えば設定ファイル経由))と、フレームワークの内部状態へのアクセスを可能にするコンテキストオブジェクトを提供する必要があります。[ 1 ]

用途と文脈

このパターンの典型的な利用者は、ウェブサーバー[ 2 ](前述の通り)、オブジェクト[ 3 ]メッセージ指向ミドルウェア[ 4 ]である。

このパターンの実装例としては、 Java Platform, Enterprise Editionの一部であるjavax.servlet.Filterインターフェイスがあります。

アスペクト指向プログラミング(AOP) は、インターセプター パターンに通常定義されている要素を使用しませんが、状況によってはインターセプターの機能を提供するためにも使用できます。

参考文献