https://medium.com/@nikitinsn6/unleashing-the-potential-of-the-factory-design-pattern-a-detailed-review-using-c-and-python-667e7adf5e1c