Framework - hide complex code behind a simple interface Facade pattern: create a simplified interface of an existing interface to ease usage for common tasks Flyweight pattern: a large quantity of objects share a common properties object to save space Marker pattern: an empty interface to associate metadata with a class. Pipes and filters: a chain of processes where the output of each process is the input of the next Opaque pointer: a pointer to an undeclared or private type, to hide implementation details Proxy pattern: a class functioning as an interface to another thing