Motivation
To Links classes during configuration rather than compilation.
Summary
This is an Extensibility Pattern implement Runtime loading and extension of application behaviors and features by loading some of application classes dynamically based on configuration supplied.
It can also be used to implement application that runs on different run time where implementation is environment dependent.
The Plug-in pattern extends the behavior of an existing class so that it can be used for a more specific purpose. It differs from using class inheritance, where behavior is altered or overwritten, or configuration, where behavior modification is limited to the capabilities of the defined configuration options.
When to Use
Use Plugin whenever you have behaviors that require different implementations based on runtime environment.
Example
Application Plug-In like Theams
Syntax coloring.
Related Patterns
Separated Interface :is use to define the behaviors that will have different implementations based on runtime environment.
Factory (Plugin Factory) : can be used for special object creations process.
IOC: Can be use for dynamic configuration handling.
Related Technologies
Enterprise Unity Library Application Block: is used to support IOC i.e. dynamic configuration handling.
Microsoft Addin Framework (MAF) : Microsoft way to build plug-ins for real time applications
Microsoft Extension Framework (MEF) : Framework to support dynamic object loading in declarative way.
References
Overview Tutorials
Further References