| Pattern Name | Description | Example |
|---|---|---|
| Proxy | A service needs to be made more versatile without affecting the service provider or client | A proxy class sends client requests to a server object on a different computer |
| Singleton | All clients need access to a single shared object of a class | A random number singleton gives all clients access to the same generator |
| State | A separate object is used for each state. State-dependent code is distributed over the various state classes | An image editor has different drawing states. Each state is handled by a separate tool object |
| Visitor | A structure with a fixed set of element classes needs an extensible set of operations | An XML visitor visits a tree of XML elements, applying arbitrary operations to each node |