Module Facade
by kirk knoernschild
Statement
Create a facade serving as a coarse-grained entry point to the modules underlying implementation.
Description
Often times, configuring fine-grained modules can be a burden, especially when multiple fine-grained modules are typically used in conjunction but forces prevent module designers from combining the fine-grained module into a single coarse-grained entity. In these situations, a module facade can be used to expose a subset of the functionality contained within a group of fine-grained modules. A module facade allows a group of fine-grained modules to operate as a coarse-grained module. Figure 1 illustrates a Module Facade.

Figure 1: Module Facade
Implementation Variations
The module facade can configure the fine-grained modules.
Module facade can also act as a mediator to help break dependencies between modules. This is quite similar to escalation.
Consequences
All fine-grained modules must be deployed whenever the coarse-grained module is deployed.
Comments
From an OSGi perspective, you might want to hint at the nested frameworks/composite bundles (maybe coming in 4.3?) which essentially expose this kind of pattern. Note however that with a composite bundle, you typically have many services forwarded by the facade manager, and that there isn’t a single implementation Jar per se but rather a set of service forwarders that register themselves (essentially) with the facade/manager.