Facade pronounces /f2'sa:d/
"Provide a unified interface to a set of interfaces in a subsystem. Facade defines a
higher-level interface that makes the subsystem easier to use."
------ GoF
intent: You want to simplify now to use an existing system. You need to define your
own interfaces.
problem: You need to use only a subset of a complex system. Or you need to inte-
act with teh system in a particular way.
This approach only works when using a subset of the system's capability or when
interacting with it in a particular way. (It seems that we do always only need the
subset of a given system.)
Variations on Facade:
1 reduce the number of objects a client must work with
2 supplement existing functions with new routines. In addition to using functions
that are in the system, I also need to provide some new functionality.
3 encapsulating layer
Track system usage
Swap out systems.
The facade is worthy when
the cost of writing this new class is less than the cost of everybody learning how
to use the original system or is less than you would spend on maintenance in the
future.