The Template Method pattern enables algorithms to defer certain steps to subclasses. The structure of the algorithm does not change, but small well-defined parts of its operation are handled elsewhere.
Consider the sorting algorithms discussed under the Strategy
pattern. Each sort has a certain structure that is independent of the
kind of items being sorted—except for one operation. At some point,
the sort will need to compare two items. The comparison will depend on
the types of the items themselves. For example, comparing two integers
could be done with a simple
but if the items are, say,
objects, there could be many ways in which they could be compared. If
the comparison is done on a
field, the sort will yield a list sorted by surname. However, the
comparison could also be done on another field, such as
Town, which would produce a list of people
sorted by the town in which they live. Thus, we can see a clear
distinction between the sorting algorithm and some subsidiary
operation that is dependent on the data. The same distinction exists
for other algorithms, such as searching. Sorting and searching are
therefore Template Methods, as some parts of their operation are
deferred to other classes.
The UML diagram for the Template Method pattern is given in
Figure 7-5. It shows an
algorithm class that uses an
IPrimitives interface to connect with methods defined in any class. This class would typically handle data (as ...