https://medium.com/@saquibdev/strategy-design-pattern-low-level-design-interview-preparation-84be9dee7f66