From 165c695eb5021bc46d34d947da34ba6babc36d10 Mon Sep 17 00:00:00 2001 From: perfectprocrastinator Date: Sun, 11 Feb 2024 00:32:44 +0530 Subject: [PATCH] Bilal's Factory DP Assignment Solution --- .../design/assignments/factory/AudioPlayer.java | 12 ++++++++++++ .../assignments/factory/AudioPlayerFactory.java | 17 +++++++++++++++++ .../design/assignments/factory/FLACPlayer.java | 2 +- .../design/assignments/factory/MP3Player.java | 2 +- .../design/assignments/factory/WAVPlayer.java | 2 +- 5 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/scaler/lld/design/assignments/factory/AudioPlayer.java b/src/main/java/com/scaler/lld/design/assignments/factory/AudioPlayer.java index bfcfd06..bec21ef 100644 --- a/src/main/java/com/scaler/lld/design/assignments/factory/AudioPlayer.java +++ b/src/main/java/com/scaler/lld/design/assignments/factory/AudioPlayer.java @@ -1,6 +1,18 @@ package com.scaler.lld.design.assignments.factory; public abstract class AudioPlayer { + private int volume; + private double playBackRate; + public abstract void play() ; + public abstract void pause() ; + + public abstract void stop(); + + public abstract void setVolume(int volume); + + public abstract int getVolume(); + + public abstract double getPlayBackRate(); public abstract MediaFormat supportsType(); } \ No newline at end of file diff --git a/src/main/java/com/scaler/lld/design/assignments/factory/AudioPlayerFactory.java b/src/main/java/com/scaler/lld/design/assignments/factory/AudioPlayerFactory.java index 8c05c29..3f6711e 100644 --- a/src/main/java/com/scaler/lld/design/assignments/factory/AudioPlayerFactory.java +++ b/src/main/java/com/scaler/lld/design/assignments/factory/AudioPlayerFactory.java @@ -1,4 +1,21 @@ package com.scaler.lld.design.assignments.factory; +import lombok.AllArgsConstructor; + public class AudioPlayerFactory { + public static AudioPlayer createAudioPlayer(MediaFormat mediaFormat,int volume,double playBackRate){ + if(mediaFormat==MediaFormat.MP3){ + return new MP3Player(volume,playBackRate); + } + else if(mediaFormat==MediaFormat.WAV){ + return new WAVPlayer(volume,playBackRate); + } + else if(mediaFormat==MediaFormat.FLAC){ + return new FLACPlayer(volume,playBackRate); + } + else{ + throw new RuntimeException("Invalid Media player format provided"); + } + } + } \ No newline at end of file diff --git a/src/main/java/com/scaler/lld/design/assignments/factory/FLACPlayer.java b/src/main/java/com/scaler/lld/design/assignments/factory/FLACPlayer.java index 8b39d1c..977d629 100644 --- a/src/main/java/com/scaler/lld/design/assignments/factory/FLACPlayer.java +++ b/src/main/java/com/scaler/lld/design/assignments/factory/FLACPlayer.java @@ -1,6 +1,6 @@ package com.scaler.lld.design.assignments.factory; -public class FLACPlayer { +public class FLACPlayer extends AudioPlayer{ private int volume; private double playBackRate; diff --git a/src/main/java/com/scaler/lld/design/assignments/factory/MP3Player.java b/src/main/java/com/scaler/lld/design/assignments/factory/MP3Player.java index 9e727db..599ec02 100644 --- a/src/main/java/com/scaler/lld/design/assignments/factory/MP3Player.java +++ b/src/main/java/com/scaler/lld/design/assignments/factory/MP3Player.java @@ -1,6 +1,6 @@ package com.scaler.lld.design.assignments.factory; -public class MP3Player { +public class MP3Player extends AudioPlayer{ private int volume; private double playBackRate; diff --git a/src/main/java/com/scaler/lld/design/assignments/factory/WAVPlayer.java b/src/main/java/com/scaler/lld/design/assignments/factory/WAVPlayer.java index c2e22fa..f2cf162 100644 --- a/src/main/java/com/scaler/lld/design/assignments/factory/WAVPlayer.java +++ b/src/main/java/com/scaler/lld/design/assignments/factory/WAVPlayer.java @@ -1,6 +1,6 @@ package com.scaler.lld.design.assignments.factory; -public class WAVPlayer { +public class WAVPlayer extends AudioPlayer{ private int volume; private double playBackRate;