After this registration, the SystemModuleController must respond to commands and queries from the SystemController regarding its operation state. Each subsystem manages its operation state according to its own needs. Each abstract implementation is a system adapter, which functions in a manner similar to the event adapter classes of package java.awt.event . You may, without breaking the architecture, choose an implementation standard other than what was obtained from subclassing the abstract adapter implementations in the hierarchy. Should you select the full power of the Setup pattern by subclassing the AbstractModuleManager , you must implement the SystemModuleController interface for each subsystem facade class.
Subsystems tend to depend on the services of other subsystems.
For instance, a distributed object lookup service depends on the services of the network subsystem. Any subsystem module management system must make sure that all parent subsystems are brought to a specified higher state before bringing any dependent subsystems to that particular state. To ensure that no dependency problems remain during system-state shifts, all SystemModuleController objects should register their parent modules. When in need, the SystemController may therefore make certain that all dependencies are acknowledged during state shifts. Let us take a look at the SystemModuleController interface to better understand a subsystem module.