O analista André é o arquiteto da aplicação web TCEDash. O componente Board, da TCEDash, apresenta ao usuário indicadores visuais e manipuláveis, baseados em informações contidas no banco de dados da aplicação. O Board instancia um novo objeto para cada indicador apresentado ao usuário. Sabendo que determinado subconjunto de informações se repete em todos os indicadores, André aplicou no componente Board o padrão de projeto estrutural do Gang Of Four (GoF), que otimiza a alocação de objetos na memória RAM, mediante o compartilhamento de atributos comuns entre os objetos. André aplicou no componente Board o padrão do GoF:
- A)proxy;
Proxy controla o acesso a um objeto, mas não tem como objetivo principal compartilhar atributos comuns para economizar memória.
- B)bridge;
Bridge separa abstração da implementação, porém não é o padrão usado para reaproveitar estado comum entre muitos objetos.
- C)facade;
Facade simplifica o acesso a um subsistema, mas não resolve o problema de armazenamento compartilhado de dados repetidos.
- D)flyweight;
Flyweight é o padrão que compartilha estado intrínseco entre vários objetos para reduzir o consumo de memória.
- E)composite.
Composite organiza objetos em estrutura de árvore, mas não trata de otimização de memória por compartilhamento de atributos.
Gabarito: D
Quando voce ve um sistema criando muitos objetos muito parecidos e percebe que parte deles se repete em todos, a ideia do GoF é economizar memória sem perder flexibilidade. Em vez de guardar uma cópia completa de cada objeto, o projeto separa o que é intrínseco, isto é, o que pode ser compartilhado, do que é extrínseco, que varia de instância para instância. Assim, vários objetos podem reaproveitar o mesmo “miolo” comum, mudando apenas o que for necessário. Esse é exatamente o caso descrito no enunciado: o componente Board cria um novo objeto para cada indicador, mas existe um subconjunto de informações repetido em todos eles. O padrão que atende a essa necessidade é o Flyweight, cujo objetivo é reduzir o uso de memória por meio do compartilhamento de estado comum entre objetos de mesma natureza. Na prática, o Flyweight aparece muito em cenários com grande volume de entidades repetidas, como caracteres de um editor de texto, peças em jogos, árvores em interfaces gráficas ou elementos visuais com atributos compartilháveis. A lógica é simples e elegante: se algo é igual para muitos, não faz sentido duplicar isso mil vezes. Por isso o gabarito é a letra D. As demais alternativas representam outros tipos de padrão estrutural, mas nenhuma delas tem como foco principal a economia de RAM pelo compartilhamento de atributos comuns entre objetos.