Questão nº 51
Questão de Tecnologia da Informação · FGV TRF1 2024 (nº 51)
O sistema TRF1Web possui um módulo orientado a eventos,
chamado TRF1Sync. No TRF1Sync, há um objeto central que
implementa um loop síncrono, responsável por receber eventos
de indicação. Ao receber um evento, o objeto central dispara a
operação associada mediante um objeto manipulador de evento.
Esse comportamento do TRF1Sync é resultado direto da aplicação
do seguinte padrão da Pattern-Oriented Software Architecture:
- Areactor; (alternativa correta)
- Bproactor;
- Cinterceptor;
- Dobjeto ativo;
- Eobjeto monitor.
Resposta comentada
Gabarito Alternativa A
O padrão Reactor é uma forma de lidar com múltiplos eventos de entrada em um único thread, onde um objeto central espera por eventos e os despacha para manipuladores específicos de forma síncrona.
(A) Correta: O padrão Reactor descreve exatamente esse comportamento: um objeto central (o "Reactor") que possui um loop síncrono para esperar por eventos (chamados "eventos de indicação" na questão) e, ao recebê-los, despacha a execução para um manipulador de evento apropriado. A chave é o "loop síncrono" que processa eventos sequencialmente no mesmo thread.
(B) Incorreta: O padrão Proactor também lida com eventos, mas de forma assíncrona. Ele inicia operações não bloqueantes e, quando elas são concluídas, um callback é invocado. A descrição da questão enfatiza um "loop síncrono", o que contradiz o Proactor. A armadilha da banca aqui é que ambos são padrões de multiplexação de eventos, mas o Reactor é síncrono e o Proactor é assíncrono.
(C) Incorreta: O padrão Interceptor permite adicionar lógica (como logging ou segurança) de forma transparente antes ou depois da execução de uma operação ou mensagem, sem alterar o código principal. Não se trata de um objeto central com um loop para despachar eventos.
(D) Incorreta: O padrão Objeto Ativo (Active Object) desacopla a invocação de um método de sua execução, usando uma fila de mensagens e um thread interno para processar as requisições de forma assíncrona. Embora envolva assincronia e processamento de tarefas, não é um padrão para um loop central síncrono de despacho de eventos externos.
(E) Incorreta: O padrão Objeto Monitor (Monitor Object) é usado para sincronização de threads, garantindo que apenas um thread por vez possa acessar uma seção crítica de código de um objeto, prevenindo condições de corrida. Não tem relação com o despacho de eventos.
Fonte: FGV TRF1 2024 Analista Judiciário - Análise de Sistemas de Informação (Caderno Tipo 1). Reproduzida para fins de estudo.