Modules are singletons provided by plugins.
They are identified by a ''Module Slot ID'' as well as an individual ''nameimplementation'' and . Usually, modules are accessed via an interface they implement, which makes replacement easy.E.g., the static ''implementationKernel''class provides access to the UBIKSettings module via the interface IUBIKSettings.This means that a plugin can override the UBIKSettings class without any adaptions on the caller-side. The concept of switching implementations without the caller having to be changed is called "Inversion of Control" (IoC).It can be understood as an extension of the "Factory" pattern.
===== Module Definition =====