Buscar

Padrão Flyweight para Compartilhamento Eficiente de Objetos

Prévia do material em texto

FLYWEIGHT
Objetivo
• Compartilhar, de forma eficiente, objetos que são usados em grande 
quantidade
Intenção 
• Usar compartilhamento para suportar eficientemente grandes 
quantidades de objetos de granularidade fina.
Motivação
• A aplicação usa uma grande quantidade de objetos;
• Custos de armazenamento são altos, por causa da grande quantidade 
de objetos;
• Parte considerável do objeto pode se tornar extrínseco;
• Uma vez que o estado extrínseco é removido, muitos agrupamentos 
de objetos podem ser substituídos por uma quantidade 
consideravelmente menor de objetos compartilhados;
Exemplo
• Estamos desenvolvendo uma aplicação para gerenciar milhares de 
apresentações com slides. Essa aplicação disponibilizará um conjunto 
de temas que podem ser aplicados individualmente em cada slide de 
uma apresentação.
• Em geral, o conteúdo (título e texto) de cada slide é único. Portanto, 
não seria possível compartilhar de maneira eficiente o conteúdo de 
slides diferentes.
• Por outro lado, como vários slides podem utilizar o mesmo tema, eles 
poderiam compartilhar as informações relativas à formatação da 
fonte, cor de fundo, layout, e etc. Consequentemente, a quantidade 
de memória utilizada seria drasticamente reduzida. 
Aplicabilidade
• Uma aplicação utiliza um grande número de objetos;
• Os custos de armazenamento são altos por causa da grande 
quantidade de objetos;
• Muitos grupos de objetos podem ser substituídos por relativamente 
poucos objetos compartilhados;
• A aplicação não depende da identidade dos objetos. Uma vez 
Flyweight podem ser compartilhados.
Estrutura

Mais conteúdos dessa disciplina