O'Reilly logo

C# 3.0 Design Patterns by Judith Bishop

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Template Method Pattern

Role

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.

Illustration

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 i==j, but if the items are, say, People objects, there could be many ways in which they could be compared. If the comparison is done on a Surname 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.

Design

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 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required