•Facade
–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
•Flyweight
–Use sharing to support large numbers of fine-grained
objects efficiently
•Proxy
–Provide a surrogate or placeholder for another object to
control access to it
•