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;