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

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

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

Apresentações semelhantes


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

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

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

3 Padrão Flyweight

4 © LES/PUC-Rio Flyweight Classificação –Estrutural de Objeto Propósito –Usar compartilhamento para suportar eficientemente grandes quantidades de objetos de granularidade fina.

5 © LES/PUC-Rio Flyweight Motivação –Aplicações que utilizam grande número de objetos 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. /* Trabalho de PSS*/ public static... System.out.println... Objeto Linha Objeto Linha p u b l i c

6 © LES/PUC-Rio 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) abcdefg... Pool de Flyweight

7 © LES/PUC-Rio 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.

8 © LES/PUC-Rio 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.

9 © LES/PUC-Rio Flyweight

10 © LES/PUC-Rio Flyweight Participantes –Flyweight 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

11 © LES/PUC-Rio Flyweight Colaborações –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

12 © LES/PUC-Rio Flyweight

13 © LES/PUC-Rio Flyweight

14 Fim!!


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

Apresentações semelhantes


Anúncios Google