Provide a unified interface to a set of interfaces in a subsystem. Facede defines a higher-level interface that makes the subsystem easier to use.

Namespace separation.

module subsystem {
define class C1 { ... }
define class C2 { ... }
...
}
module facade {
define class Facade {
define abstract void easy_operation();
}
}
module facade.implementation extends facade, subsystem {
class Facade {
void easy_operation() { ... }
}
}