- At least one custom exception class that extends Exception should be written. (The struct
BindErroris a custom exception, which defines the error type for binding errors.) - At least one inheritance implementation must be included. (The
NetworkListenerimplements theClientHandlerandListenertrait.) - At least one custom (non-Spring Boot interface) interface should be created and used. (The
ClientHandlertrait is like an interface in Rust.)
In our code we adhered to the Strategy Design Pattern as described here. For example, the ClientHandler trait acts as the strategy interface and the NetworkListener implements the strategy via the trait. This means that in the future, this strategy could be replaced to allow for a different communication medium, e.g. Serial.
- The user interface should be interactive and usable by any person.
- Sounds are played synchronously across multiple devices.
- Any mp3 file can be uploaded by the user to play.