Ответ
class AudioPlayerFacade {
private val audioDecoder = AudioDecoder()
private val equalizer = Equalizer()
private val audioOutput = AudioOutput()
fun playAudio(file: String) {
val decodedAudio = audioDecoder.decode(file)
val enhancedAudio = equalizer.enhance(decodedAudio)
audioOutput.play(enhancedAudio)
}
}
class AudioDecoder {
fun decode(file: String): ByteArray =
// декодирование аудио
byteArrayOf()
}
class Equalizer {
fun enhance(audio: ByteArray): ByteArray =
// обработка эквалайзером
audio
}
class AudioOutput {
fun play(audio: ByteArray) {
// воспроизведение аудио
}
}
// Использование:
val player = AudioPlayerFacade()
player.playAudio("song.mp3")
Фасад скрывает сложность работы с аудиосистемой за простым интерфейсом playAudio(). Клиентскому коду не нужно знать о декодере, эквалайзере и выводе звука.