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

ソフトウェア開発分野において、インターセプターパターンとは、ソフトウェアシステムやフレームワークが通常の処理サイクルを変更または拡張する手段を提供したい場合に用いられるソフトウェア設計パターンです。例えば、Webサーバーの典型的な処理シーケンス(簡略化)は、ブラウザからURIを受け取り、それをディスク上のファイルにマッピングし、ファイルを開いてその内容をブラウザに送信するというものです。これらのステップはいずれも、例えばURIをファイル名にマッピングする方法を変更したり、ファイルの内容を処理する新しいステップを挿入したりすることで、置き換えたり変更したりできます。
このパターンの重要な側面は、変更が透過的であり、自動的に適用されることです。本質的には、システムの残りの部分は何かが追加または変更されたことを知る必要がなく、以前と同じように動作し続けることができます。これを可能にするには、拡張用の定義済みインターフェースを実装する必要があり、インターセプターを登録する何らかのディスパッチメカニズム(これは動的、実行時、または静的(例えば設定ファイル経由))と、フレームワークの内部状態へのアクセスを可能にするコンテキストオブジェクトを提供する必要があります。[ 1 ]
用途と文脈
このパターンの典型的な利用者は、ウェブサーバー[ 2 ](前述の通り)、オブジェクト[ 3 ]、メッセージ指向ミドルウェア[ 4 ]である。
このパターンの実装例としては、 Java Platform, Enterprise Editionの一部であるjavax.servlet.Filterインターフェイスがあります。
アスペクト指向プログラミング(AOP) は、インターセプター パターンに通常定義されている要素を使用しませんが、状況によってはインターセプターの機能を提供するためにも使用できます。
参考文献
- ^ 「Schmidt, Stal, Rohnert & Buschmann: 『Pattern-Oriented Software Architecture Vol.2: Patterns for Concurrent and Networked Objects』、pp. 109--140、2001年4月」。2017年12月23日時点のオリジナルよりアーカイブ。 2009年11月24日閲覧。
- ^ Apache Software Foundation: Tomcat 6.0 チャネルインターセプターリファレンス、2009年11月24日アクセス
- ^ OMG、「CORBA v3.1、パートI:インターフェース」、第16章「ポータブルインターセプター」、2008年1月
- ^ 「E. Curry、D. Chambers、G. Lyons、「Extending Message-Oriented Middleware using Interception」、第3回国際分散イベントベースシステムワークショップ(DEBS '04)、ICSE '04、エディンバラ、スコットランド、英国、2004年」(PDF)。オリジナル(PDF)から2011年7月26日にアーカイブ。 2009年11月24日閲覧。