Describe at least two design patterns that your team is going to implement for your project. Clearly explain why your team has chosen those design patterns and how they will be implemented.
The Fellas have decided on the following design patterns to implement:
Model View Controller (MVC)
We will use the Model View Controller design pattern to divide the dashboard components.
Model: Manages the core data and logic of the weather and wildfire information.
View: Responsible for the visual representation of data (charts, maps, etc).
Controller: Handles user interactions, translating them into actions on the model and view.
Maintainability: Modifications to the data model, how data is presented, or interaction logic can be made within their respective components without disrupting other parts of the system.
Scalability: As the dashboard grows in complexity, MVC makes it easier to add new features or components.
Implementation: We have a WeatherStation model that describes and fetches the weather data. Next, we have a WeatherView, which takes the data and renders specific charts and widgets based on the WeatherStation. Lastly, we have a WeatherDataController, that receives a requested WeatherStation, fetches the data from that model, and sends it to a WeatherView to be rendered.
Observer
Real-Time Updates: The alert system is a prime candidate for the Observer pattern. Weather stations (subjects) can notify subscribed users (observers) about critical weather changes.
Decoupling: Weather stations don't need to know about specific user preferences or how alerts are delivered. They simply broadcast updates.
Flexibility: Easily add new alert types (email, SMS, etc.) or change notification mechanisms without modifying the core weather data logic.
Implementation: The User Class will act as the observer, and can update data at any time. The WeatherStation Class acts as the subject, and can notify Users with alerts when extreme weather data changes.
Describe at least two design patterns that your team is going to implement for your project. Clearly explain why your team has chosen those design patterns and how they will be implemented.