Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
####Reference Issues
The data sources may change in the future, or maybe you want to change the service someday. Since in your code, service and data sources are combined together, the change of data sources will force the service to change.
####What does this implement/fix? Explain your changes.
I apply bridge pattern so that service and data sources can vary independently.
I add a new interface named DataSourcesInterface, which has a method get_locations(). This class is responsible for getting data from different data sources. class JHULocations, CSBSLocations and NYTLocations represent three different data sources that will return us the locations, these three class implement this interface. LocationService is an abstract class, which is responsible for managing the services. I add a construct method which receives a class that implements DataSourcesInterface. So, its children can use this as an attribute. I add BasicLocationService class to implement LocationService class. It overwrites the get_all() methods and call the get_locations() methods in DataSourcesInterface interface. So, when there is any change to data source, we only need to change the parameter that are passed to children of LocationService class. Service and data source will change independently.
####Any other comments?
Thank you for reading!