Template Pattern
- It allows us to design an abstract class where certain methods are left to the subclasses to implement
- This pattern, allows you to spawn several flavours of implementations all the while keeping a commmon interface
- Great for code reuse
- Implements an inverted control structure where the abstract class calls methods on the subclasses