Interceptor pattern: Difference between revisions

Content deleted Content added
Added Design Patterns table
m Spelling and grammar (ie vs eg)
Line 1:
[[File:Interceptor.VSD Example.png|thumb|upright=1.6|Example of an interceptor]]
In the field of [[software development]], an '''interceptor pattern''' is a [[software design pattern]] that is used when software systems or [[software framework|framework]]s want to offer a way to change, or augment, their usual processing cycle. For example, a (simplified) typical processing sequence for a web-server is to receive a URI from the browser, map it to a file on disk, open the file and send its contents to the browser. Any of these steps could be replaced or changed, i.e.g. by replacing the way URIs are mapped to filenames, or by inserting a new step which processes the files contents.
 
Key aspects of the pattern are that the change is ''transparent'' and used ''automatically''. In essence, the rest of the systemssystem does not have to know something has been added or changed and can keep working as before. To facilitate this, a ''predefined interface'' for extension has to be implemented, some kind of ''dispatching'' mechanism is required where interceptors are registered (this may be dynamic, at runtime, or static, e.g. through configuration files) and ''context objects'' are provided, which allow access to the framework's internal state.<ref name="POSA2">[http://www.cs.wustl.edu/~schmidt/POSA/POSA2/ Schmidt, Stal, Rohnert & Buschmann: "Pattern-Oriented Software Architecture Vol.2: Patterns for Concurrent and Networked Objects", pp. 109--140, April 2001]</ref>
 
== Uses & Context ==