feat: added music player aplication #40
Merged
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.
🎵 Music Player Application - Design Patterns Implementation
📋 Overview
This PR introduces a comprehensive Music Player application that demonstrates multiple design patterns in C++. The application provides a complete music playback system with playlist management, multiple playback strategies, and device abstraction.
✨ Features
Core Functionality
Demo Scenarios
🏗️ Architecture & Design Patterns
1. Singleton Pattern
MusicPlayerFacade: Central orchestrator for the music playerMusicPlayerApplication: High-level application controllerDeviceManager,PlaylistManager,StrategyManager: Resource managers2. Strategy Pattern
PlayStrategyinterface with concrete implementations:SequentialPlayStrategy: Plays songs in playlist orderRandomPlayStrategy: Plays songs in random orderCustomQueueStrategy: Allows custom song queuing3. Adapter Pattern
IAudioOutputDeviceinterface with device adapters:BluetoothSpeakerAdapterWiredSpeakerAdapterHeadphonesAdapter4. Factory Pattern
DeviceFactory: Creates appropriate audio output device instances based on device type5. Facade Pattern
MusicPlayerFacade: Provides simplified interface to complex subsystem of managers and strategies6. Manager Pattern
DeviceManager: Handles audio device connections and managementPlaylistManager: Manages playlist creation and song associationsStrategyManager: Manages playback strategy selection and instantiation📁 Project Structure
🚀 Getting Started
Prerequisites
Compilation & Execution
C++ Version
🎯 Demo Output
The application demonstrates various playback scenarios:
🔧 Technical Highlights
Error Handling
Extensibility
Code Quality
📊 Design Pattern Benefits
🎵 Sample Usage
This implementation serves as an excellent example of how multiple design patterns can work together to create a robust, maintainable, and extensible software system.
closess issue- #34