Intent: Provide a way to extend the capabilities of a software system by addition rather than modification. This can range from traditional plug-ins and add-ons to an architecture built almost entirely of plug-ins.
Motivation:
Modifiability (Requirements change). Availability. Testability. Focused features. Limited memory footprint. ...
Applicability:
Known Uses:
See examples in PluginArchitectures
Related Patterns:
OpenClosedPrinciple, PluggableArchitecture
Competitors
- UnixWay: files/text/pipes
- It is unclear how this competes. Perhaps you can offer an example, TopMind, since you contributed it?
- Mobile Code, e.g. with ScriptingLanguage, is a competitor to "hard" PluginArchitecture (i.e. where plugins are compiled separately). E.g. as JavaScript performance and communications support goes up, the need for DLL-style browser plugins goes down.
- PublishSubscribeModel architectures make it easy to extend a software system by adding new processes.
- BlackboardMetaphor or the centralized Database design also allows a multi-process alternative to DLL-style plugins.
References:
See also: OpenClosedPrinciple, PluginArchitectures, PluggableArchitecture