Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
package com.scaler.lld.design.assignments.abstractfactory;

import com.scaler.lld.design.assignments.abstractfactory.decoder.AudioDecoder;
import com.scaler.lld.design.assignments.abstractfactory.player.AudioPlayer;
import com.scaler.lld.design.assignments.abstractfactory.processor.AudioProcessor;
import com.scaler.lld.design.assignments.abstractfactory.processor.FLACAudioProcessor;

public abstract class AudioFactory {
public abstract MediaFormat supportsFormat();
public abstract MediaFormat supportsType();
public abstract AudioProcessor createAudioProcessor(byte[] bytes);
public abstract AudioDecoder audioDecoder(byte[] bytes);
public abstract AudioPlayer createPlayer(int volume, double playbackRate);
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,30 @@
package com.scaler.lld.design.assignments.abstractfactory;

public class FLACAudioFactory {
import com.scaler.lld.design.assignments.abstractfactory.decoder.AudioDecoder;
import com.scaler.lld.design.assignments.abstractfactory.decoder.FLACDecoder;
import com.scaler.lld.design.assignments.abstractfactory.player.AudioPlayer;
import com.scaler.lld.design.assignments.abstractfactory.player.FLACPlayer;
import com.scaler.lld.design.assignments.abstractfactory.processor.AudioProcessor;
import com.scaler.lld.design.assignments.abstractfactory.processor.FLACAudioProcessor;

public class FLACAudioFactory extends AudioFactory {
@Override
public MediaFormat supportsType() {
return MediaFormat.FLAC;
}

@Override
public AudioProcessor createAudioProcessor(byte[] bytes) {
return new FLACAudioProcessor(bytes);
}

@Override
public AudioDecoder audioDecoder(byte[] bytes) {
return new FLACDecoder(bytes);
}

@Override
public AudioPlayer createPlayer(int volume, double playbackRate) {
return new FLACPlayer(volume, playbackRate);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,30 @@
package com.scaler.lld.design.assignments.abstractfactory;

public class MP3AudioFactory {
import com.scaler.lld.design.assignments.abstractfactory.decoder.AudioDecoder;
import com.scaler.lld.design.assignments.abstractfactory.decoder.MP3Decoder;
import com.scaler.lld.design.assignments.abstractfactory.player.AudioPlayer;
import com.scaler.lld.design.assignments.abstractfactory.player.MP3Player;
import com.scaler.lld.design.assignments.abstractfactory.processor.AudioProcessor;
import com.scaler.lld.design.assignments.abstractfactory.processor.MP3AudioProcessor;

public class MP3AudioFactory extends AudioFactory {
@Override
public MediaFormat supportsType() {
return MediaFormat.MP3;
}

@Override
public AudioProcessor createAudioProcessor(byte[] bytes) {
return new MP3AudioProcessor(bytes);
}

@Override
public AudioDecoder audioDecoder(byte[] bytes) {
return new MP3Decoder(bytes);
}

@Override
public AudioPlayer createPlayer(int volume, double playbackRate) {
return new MP3Player(volume, playbackRate);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@


import com.scaler.lld.design.assignments.abstractfactory.MediaFormat;
import lombok.Getter;

@Getter
public abstract class AudioProcessor {

private final byte[] audioData;
Expand All @@ -11,10 +13,6 @@ public AudioProcessor(byte[] audioData) {
this.audioData = audioData;
}

public byte[] getAudioData() {
return audioData;
}

public abstract MediaFormat supportsFormat();

public abstract byte[] process();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import com.scaler.lld.design.assignments.abstractfactory.MediaFormat;

public class MP3AudioProcessor extends AudioProcessor {

public MP3AudioProcessor(byte[] audioData) {
super(audioData);
}
Expand Down