Alternativa B - Flyweight
O padrão de projeto Flyweight (Pescoço-de-Flyweight) tem como objetivo principal reduzir o consumo de memória ao permitir o compartilhamento de tantos objetos quanto possível.
Características principais do Flyweight:
- Compartilhamento: Ele permite que múltiplos contextos compartilhem o mesmo estado interno (imutável), evitando a criação de muitas cópias idênticas.
- Fábrica Interna: Para garantir que o compartilhamento funcione corretamente, o Flyweight utiliza uma fábrica de objetos interna. Essa fábrica controla a instanciação, retornando uma referência existente se o objeto já foi criado, ou criando um novo caso contrário.
- Objetos Imutáveis: Os dados compartilhados devem ser imutáveis para que sejam seguros para uso concorrente por várias partes do sistema sem risco de alteração indesejada.
Análise das demais alternativas:
| Padrão | Função Principal | Por que não se encaixa? |
|---|
| Proxy | Controla o acesso a um objeto | Foca em controle de acesso e lazy loading, não no compartilhamento massivo de imutáveis. |
| Facade | Interface simplificada | Oferece uma interface única para um sub-sistema complexo, sem gestão de instâncias. |
| Composite | Estrutura de árvore | Permite tratar objetos individuais e composições uniformemente, não foca em otimização de memória via compartilhamento. |
| Adapter | Compatibilidade de interfaces | Converte a interface de uma classe em outra compatível com o cliente. |
Portanto, a descrição de gerenciar instanciação e compartilhamento de objetos imutáveis utilizando uma fábrica corresponde exatamente à definição do padrão Flyweight.
Alternativa B.