Skip to main content

What It Is

The Template Method pattern fixes the skeleton of an algorithm — the steps and their order — while letting the individual steps vary. The recipe is written once; each variant fills in its own steps.

PHP does it the classic way: an abstract base class owns a final skeleton method, and abstract protected methods are the steps every subclass must provide.


Example: One Recipe, Two Drinks

make() owns the order: boil, brew, pour, extras. Tea and coffee only answer how to brew and what to add — final means they cannot reorder or skip steps.

The skeleton stays fixed

Both drinks follow the same four steps in the same order, because the order lives in one final method. A new drink implements two methods and inherits the whole discipline.

Prompt
Write a PHP script with the Template Method pattern: an abstract Drink class whose final make method runs the fixed skeleton (boil, brew, pour, extras) printing every step, with abstract protected brew and extras methods, and Tea and Coffee subclasses filling in the variable steps. Make both drinks.
Output: PHP script

When to Use It

Use it when several procedures share the same fixed sequence with different details — report generation, import pipelines, test setups.

Skip it when the variants also need different orders — forcing them under one skeleton bends the pattern until it breaks. And with one variant, the skeleton is just a function.


Pros and Cons

Pros: the sequence is enforced in one place; variants cannot forget or shuffle steps; shared steps are written once.

Cons: rigid by design — a variant that needs "almost the same, but..." fights the skeleton; too many hook methods make the recipe hard to follow.