ExpDev07 / coronavirus-tracker-api

🦠 A simple and fast (< 200ms) API for tracking the global coronavirus (COVID-19, SARS-CoV-2) outbreak. It's written in python using the 🔥 FastAPI framework. Supports multiple sources!
https://coronavirus-tracker-api.herokuapp.com
GNU General Public License v3.0
1.59k stars 323 forks source link

Creational pattern #459

Closed JaeDonChoi closed 3 years ago

JaeDonChoi commented 3 years ago

WHY? I have notice in the Coronavirus-Tracker-API project, there are too many arguments passed around in app/location where both csbs and nyt would pass around similar parameters with almost identical code in the creation. Hence, I thought It would be a very good place to apply creational patterns. My learnings have taught me to avoid use of Singleton Patterns in general and this thought led me to look at other types of patterns such as Builder, Factory, or Prototype patterns. I wanted implement factory design pattern due to a lot of duplications in the code and why not apply pattern which can combine all the unnecessary work that is being done by each individually but create a factory class which does the creation for csbs and nyt.

HOW? First, I implemented factory class to remove duplications in the methods in the locations. Which involved creation of file factory_location.py and replace the method call for the constructors.