A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Projeto de Sistemas de Software Kelly Leal Leandra Mara da Silva

Apresentações semelhantes


Apresentação em tema: "Projeto de Sistemas de Software Kelly Leal Leandra Mara da Silva"— Transcrição da apresentação:

1 Projeto de Sistemas de Software Kelly Leal Leandra Mara da Silva
Design Patterns Projeto de Sistemas de Software Kelly Leal Leandra Mara da Silva

2 Motivação Aprimorar conhecimentos sobre Projeto de Sistemas de Software, realizando um estudo incremental dos Padrões de Projeto apresentados em [GoF]. © LES/PUC-Rio

3 Padrão Flyweight

4 Flyweight Classificação Propósito Estrutural de Objeto
Usar compartilhamento para suportar eficientemente grandes quantidades de objetos de granularidade fina. Objetos de Granularidade Fina: objetos que diferem-se um do outro apenas por alguns detalhes. Ele é um padrão estrutural de objeto: descrevem maneiras de montar objetos Uma tradução seria peso mosca. Forma um pool de objetos imutáveis para serem utilizados em diversas partes do sistema. Peso-mosca (Objeto) Usa compartilhamento para suportar um grande número de pequenos objetos de forma eficiente. © LES/PUC-Rio

5 Flyweight Motivação Aplicações que utilizam grande número de objetos p
Exemplo de Problema: desenvolver um editor de texto onde cada caracter é representado por um objeto. Pode não haver recursos (memória) sufientes para textos muito grandes. p u b /* Trabalho de PSS*/ Objeto Linha l Editores de Documento orientados a objeto Documentos podem requerer centenas de milhares de objetos- caracteres Problema: muitos objetos; grande consumo de memória; possibilidade de custo inaceitável em tempo de execução Caracteres se repetem. Por que não compartilhar caracteres que já foram criados previamente? Seria porque eles apresentam posições e formatações diferentes? i public static ... c Objeto Linha System.out.println ... © LES/PUC-Rio

6 System.out.println (“Poj. de Sistemas de Software”)
Flyweight Motivação Aplicações que utilizam grande número de objetos Exemplo de solução: monta-se um pool de objetos compartilhados. Cada caracter tem um objeto. Com 100 objetos (tabela ASCII) poderíamos montar textos de qualquer tamanho System.out.println (“Poj. de Sistemas de Software”) Editores de Documento orientados a objeto Documentos podem requerer centenas de milhares de objetos- caracteres Problema: muitos objetos; grande consumo de memória; possibilidade de custo inaceitável em tempo de execução Caracteres se repetem. Por que não compartilhar caracteres que já foram criados previamente? Seria porque eles apresentam posições e formatações diferentes? Logicamente: Existe um objeto para cada ocorrência de caractere Fisicamente: Existe um objeto compartilhado flyweight por caractere e ele aprece em diferentes contextos no documento. Cada ocorrência faz referência a uma mesma instância do poll. a b c d e f g . . . Pool de Flyweight © LES/PUC-Rio

7 Flyweight Observações:
O padrão procura fatorar as informações comuns a diversos objetos. Desassocia o que é intrínseco do que é extrínseco ao objeto Intrínseco: inerente, próprio do objeto. Informações independentes de contexto, podendo, por isso, ser compartilhadas. Essas informações são armazenadas no flyweight. Extrínseco: depende e varia com o contexto, não podendo, por isso, ser compartilhado. Tal estado é armazenado no cliente. © LES/PUC-Rio

8 Flyweight Aplicabilidade Aplicação utiliza grande número de objetos
Custos de armazenamento altos A maior parte dos estados de objetos pode ser tornada extrínseca (estados externalizados) Muitos objetos podem ser substituídos por poucos objetos compartilhados Aplicação não depende da identidade dos objetos. obs: testes de identidade produzirão o valor verdadeiro para objetos conceitualmente distintos. © LES/PUC-Rio

9 Flyweight © LES/PUC-Rio

10 Flyweight Participantes Flyweight ConcreteFlyweight
Define a interface através da qual os objetos flyweight recebem e agem em relação ao estado extrínseco ConcreteFlyweight Implementa a interface flyweight e adiciona as características intrínsecas, se houver UnsharedConcreteFlyweight Nem todas as subclasses flyweight precisam ser compartilhadas A interface flyweight permite o compartilhamento, mas não obriga a utilizá-lo FlyweightFactory Cria e gerencia os objetos flyweight Garante que o compartilhamento está correto Client Mantém uma referência ao flyweight Armazena o estado extrínseco do flyweight © LES/PUC-Rio

11 Flyweight Colaborações Conseqüências
O estado intrínseco é armazenado no objeto ConcreteFlyweight O estado extrínseco é armazenado no objeto Client, que passam ao flyweight quando chamam suas operações Os clientes não instanciam o ConcreteFlyweight diretamente Conseqüências Pode aumentar o processamento Redução do número de instâncias de classes Utilizado com o auxílio do padrão Composite para permitir a representação de grafos © LES/PUC-Rio

12 Flyweight © LES/PUC-Rio

13 Flyweight © LES/PUC-Rio

14 Fim!!


Carregar ppt "Projeto de Sistemas de Software Kelly Leal Leandra Mara da Silva"

Apresentações semelhantes


Anúncios Google