This document discusses several design patterns: Command, Visitor, and Strategy. It provides examples of each pattern including class diagrams and descriptions of how each pattern addresses recurring problems. The Command pattern encapsulates requests as command objects that are passed to an invoker. Visitor separates an algorithm from an object structure by moving the hierarchy of methods into standalone objects. Strategy defines a family of algorithms, encapsulates each one, and makes them interchangeable so the algorithm can be changed at runtime.