Template Method

Origin: GoF 95
Reason: To allow subclasses of a common class to vary portions or steps of a general algorithm.
Synopsis: A general algorithm implemented by a base class calls abstract methods for some steps. Subclasses of the base class specialize these methods.
Example: Consider the process of logging in and authenticating a user for an application. Some steps of the process, e.g., prompting the user are application independent. Other steps, e.g., authenticating the user, are application dependent.
Solution:
AbstractTemplate This class defines a method, the templateMethod, that implements the general logic of an algorithm. The templateMethod calls other methods that are overriden by ConcreteTemplate.
ConcreteTemplate This class overrides methods that are called by the templateMethod.
See also: Strategy (modifies logic for individual objects rather than classes)
Factory Method (specializes the construction of an object rather than the execution of an algorithm)