Define the skeleton of an algorithm in a base class, deferring only specific steps to subclasses — every beverage boils water and pours a cup the same way, but brewing and condiments differ.
Implement `Tea`/`Coffee`, overriding only brew() and addCondiments() — Beverage.prepare() (already wired) calls them in a fixed sequence.
solve('tea') → ['Boil water', 'Steep tea', 'Pour in cup', 'Add lemon']
Sample tests