Skip to end of metadata
Go to start of metadata

The Template Method Pattern abstracts away the details of several algorithms. The generic part of an algorithm is contained within a base class. Particular implementation details are captured within base classes. The generic pattern of classes involved looks like this:


In this example, Accumulator captures the essence of the accumulation algorithm. The base classes Sum and Product provide particular customised ways to use the generic accumulation algorithm.

The resulting output is:

In this particular case, you could use Groovy's inject method to achieve a similar result using Closures:

Thanks to duck-typing, this would also work with other objects which support an add (plus() in Groovy) method, e.g.:

We could also do the multiplication case as follows:

Using closures this way looks more like the Strategy Pattern but if we realise that the built-in inject method is the generic part of the algorithm for our template method, then the Closures become the customised parts of the template method pattern.

  • No labels