Plugin system that allows you to extend your program’s functionality and modularity,
Plugins allow you to write subprograms that then hook into or are attached to a larger program. These subprograms then run, modifying or adding to the behavior of the running program. In order to write a plugin, the program itself has to be written (or hacked) to support the plugin. Once this capability exists, you can “plug and play” tremendous amounts of functionality.
Plugin systems come in many shapes and forms — to illustrate the design, the following basic concepts can help frame your thinking: