- The music streaming service should allow users to browse and search for songs, albums, and artists.
- Users should be able to create and manage playlists.
- The system should support user authentication and authorization.
- Users should be able to play, pause, skip, and seek within songs.
- The system should recommend songs and playlists based on user preferences and listening history.
- The system should handle concurrent requests and ensure smooth streaming experience for multiple users.
- The system should be scalable and handle a large volume of songs and users.
- The system should be extensible to support additional features such as social sharing and offline playback.
- The Song, Album, and Artist classes represent the basic entities in the music streaming service, with properties such as ID, title, artist, album, duration, and relationships between them.
- The User class represents a user of the music streaming service, with properties like ID, username, password, and a list of playlists.
- The Playlist class represents a user-created playlist, containing a list of songs.
- The MusicLibrary class serves as a central repository for storing and managing songs, albums, and artists. It follows the Singleton pattern to ensure a single instance of the music library.
- The UserManager class handles user registration, login, and other user-related operations. It also follows the Singleton pattern.
- The MusicPlayer class represents the music playback functionality, allowing users to play, pause, skip, and seek within songs.
- The MusicRecommender class generates song recommendations based on user preferences and listening history. It follows the Singleton pattern.
- The MusicStreamingService class is the main entry point of the music streaming service. It initializes the necessary components, handles user requests, and manages the overall functionality of the service.