Skip to content

Conversation

@JoyBiao
Copy link

@JoyBiao JoyBiao commented Aug 15, 2021

####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!

…/services/location directory, also add new file basiclocationservice.py and sourcelocations.py. And change app/data/__init__.py
…s.py, jhu.py, nyt.py implements the interface DataSourcesInterface in sourcelocations.py. Add BasicLocationService class to implement the LocationService class. LocationService class in __init__.py get a new constructor method. And apply BasicLocationService in app/data/__init__.py
@JoyBiao
Copy link
Author

JoyBiao commented Aug 15, 2021

I am so sorry! I am trying to make this PR to my own fork, but something goes wrong.

…s.py, jhu.py, nyt.py implements the interface DataSourcesInterface in sourcelocations.py. Add BasicLocationService class to implement the LocationService class. LocationService class in __init__.py get a new constructor method. And apply BasicLocationService in app/data/__init__.py
@JoyBiao JoyBiao closed this Aug 16, 2021
@JoyBiao JoyBiao reopened this Aug 16, 2021
@JoyBiao JoyBiao closed this Aug 16, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant