A component that encapsulates the mode switching logic for a mode-dependent component. A mode-dependent component is a component whose behaviour depends on operational mode. More specifically, a mode-dependent component is a component that must implement one or more strategies where, for each strategy, several implementations are possible, one for each operational mode. If is is the implementation for strategy s, then: is = fs(m) where m is the operational mode and fs(.) is a function that associates an implementation to each operational mode. A mode manager is a component that, for a specific component, implements the logic to determine the operational mode as a function of current operational conditions and that implements the fs(.) functions for all the strategies used by the mode-dependent component.
See the Mode Management design pattern.