nProvide a unified interface to a set of interfaces of subsystems
nFor example, a compiler is divided into
many parts
uScanner, parser, syntax tree data structure,
optimizers, generation, …
nMost clients just compile files, and don’t
need to access inner parts