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