Anthony Ferrara has a new post today looking at plugin handling and a few of the more common design patterns that can be used to implement them in your applications.
A common problem that developers face when building applications is how to allow the application to be "plug-able" at runtime. Meaning, to allow non-core code to modify the way an application is processed at runtime. There are a lot of different ways that this can be done, and lots of examples of it in real life. Over a year ago, I wrote a StackOverflow Answer on this topic. However, I think it deserves another look. So let's look at some patterns and common implementations.
The patterns he covers are:
- Observer
- Mediator
- Strategy
- Decorator
- Chain of Responsibility
For each there's both a bit of sample code showing it in use and links to some examples from various frameworks and other projects.