# Facade
class GerenciamentoEventos:

    def __init__(self):
        print('Gerenciamento :: Vou organizar com todo mundo!\n\n')

    def organizar(self):
        self.salao = SalaoFestas()
        self.salao.agendar()

        self.florista = Florista()
        self.florista.arranjar_flores()

        self.comida = Restaurante()
        self.comida.preparar()

        self.musica = Banda()
        self.musica.montar_palco()


# Subssitema 1
class SalaoFestas:

    def __init__(self):
        print('SalaoFestas :: Agendando o salão de festas para o casamento...')

    def _esta_disponivel(self):
        print('SalaoFestas :: Este salão de festas está disponível?')
        return True

    def agendar(self):
        if self._esta_disponivel():
            print('SalaoFestas :: Agendamento do salão realizado\n')


#Subsistema 2
class Florista:

    def __init__(self):
        print('Florista :: Flores para um evento?')

    def arranjar_flores(self):
        print('Florista :: Rosas, Margaridas e lirios serão usados...\n')


#Subsistema 3
class Restaurante:

    def __init__(self):
        print('Restaurante :: Comida para eventos...')

    def preparar(self):
        print('Restaurante :: Comida chinesa e brasileira serão servidas...\n')


# Subsistema 4
class Banda:

    def __init__(self):
        print('Banda :: Banda para eventos...')

    def montar_placo(self):
        print('Banda :: Palco montado com sucesso...')


# Cliente

class Cliente:

    def __init__(self):
        print('Cliente :: Uau! Preparação para o casamento')

    def contrata_gerente_eventos(self):
        print('Cliente :: Vou contratar uma empresa paara gerenciar eventos\n')

        ge = GerenciamentoEventos()
        ge.organizar()

    def __del__(self):
        print('Clente :: Foi muito simples organizar este evento com o façade...')


if __name__ == '__name__':
    cliente = Cliente()
    cliente.contrata_gerente_eventos()
