The template pattern is useful for removing duplicate code; it's intended to support the Don't Repeat Yourself principle we discussed in Chapter 5, When to Use Object-Oriented Programming. It is designed for situations where we have several different tasks to accomplish that have some, but not all, steps in common. The common steps are implemented in a base class, and the distinct steps are overridden in subclasses to provide custom behavior. In some ways, it's like a generalized strategy pattern, except similar sections of the algorithms are shared using a base class. Here it is in the UML format:
The template pattern
A template example
Let's create a car sales reporter as an example. We can store records...