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

Bridge Pattern for DataSources Implemented #427

Closed MikePresman closed 3 years ago

MikePresman commented 3 years ago

What Was Done Hello, today I implemented the a structural design pattern known as the Bridge Pattern.

I have implemented the bridge pattern in the DATA_SOURCES dictionary. The reason I have done this is because this allows a decoupling between the data source that is provided and the way that the specific implementation of the data source handles returning data.

Specifically speaking, rather than having DATA_SOURCE store a reference of each available data source and then calling a generic method get_all which is implemented in each of those data source objects (NYT, CSBS, JHU) that then superficially just call get_locations; get_locations() is called indirectly by having a 'bridge' method call get_all which then calls get_locations of each data source object.