Done!
The template method design pattern is an easy one to understand and each one of us has used it on multiple occassions without even realizing it! Let's dig in.
We use strategy pattern when there are multiple ways of achieving a task.
Adapter pattern normalize different interface by bridging a gap between two. This makes it possible to convert one interface to another.
Decorator Pattern allow us to stack on additional behaviour or functionality on a existing one. This means we don't have to resort to unnecessary inheritance and instead extend the behaviour during a runtime.