Приведи пример использовали Facade в Kotlin

«Приведи пример использовали Facade в Kotlin» — вопрос из категории Паттерны, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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(). Клиентскому коду не нужно знать о декодере, эквалайзере и выводе звука.