https://medium.com/mobile-app-development-publication/using-real-world-analogies-to-demystify-creational-design-patterns-in-swift-22b233f455ad