In the course of coding a plugin based application (which is progressing very well),
I sometimes worry about the aspects of Extensibility & Flexiblity.
Plugins may communicate with other plugins so it obviously relies heavily on interfaces.
My current (project)structure is like this:
Executable
Main library
Module
So basically when the application starts, it creates an instance of every class that implements the IMod interface.
Then it calls the method Initialize (IMod method), passing it the instance of the executable.
Now to the actual problem:
If I were to change/add/remove something from the main library,
wouldn't that break every module which uses the old version of that library?
I sometimes worry about the aspects of Extensibility & Flexiblity.
Plugins may communicate with other plugins so it obviously relies heavily on interfaces.
My current (project)structure is like this:
Executable
- Central point for loading & storing modules
- Provides methods so modules can load other instanciated modules
- Implements an interface which exposes those methods (Located in main library)
Main library
- Has to be referenced by every module
- Common tools (classes, methods, etc)
- Contains IMod interface (base requirement for a module)
- Contains interfaces of (standart)modules which come with the application
Module
- Has to implement IMod interface
- May get other module instances
So basically when the application starts, it creates an instance of every class that implements the IMod interface.
Then it calls the method Initialize (IMod method), passing it the instance of the executable.
Now to the actual problem:
If I were to change/add/remove something from the main library,
wouldn't that break every module which uses the old version of that library?