https://medium.com/@kanishksinghpujari/factory-pattern-vs-abstract-factory-pattern-a-complete-guide-327dc35844fd