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

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

LEONARDO SIMAS JUSSI BARROS WESLLEY VIEIRA Flyweight.

Apresentações semelhantes


Apresentação em tema: "LEONARDO SIMAS JUSSI BARROS WESLLEY VIEIRA Flyweight."— Transcrição da apresentação:

1 LEONARDO SIMAS JUSSI BARROS WESLLEY VIEIRA Flyweight

2 Problema Grande quantidade de objetos Alto custo de armazenamento Perda de performance

3 Problema new object() Nome 1 Nome 2 Nome 3

4 Solução new object() Nome 1 Nome 2Nome 3

5 Flyweight Intenção  Usar compartilhamento para suportar de forma eficiente grandes quantidades de objetos Motivação  Reduzir consumo de memória  Reduzir custo em tempo de execução

6 Aplicabilidade Usar Flyweight se... Uma aplicação utiliza um grande número de objetos Os custos são altos devido ao grande número 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

7 Flyweight Estrutura Simplificada

8 Flyweight Estrutura mais complexa

9 Flyweight Diagrama de sequência

10 Participantes Cliente  Mantém uma referência para flyweight(s)  Computa ou armazena o estado extrínseco do flyweight(s) Flyweight  Declara uma interface através do qual flyweights podem receber e atuar sobre estados extrínsecos

11 Participantes FlyweightFactory  Cria e gerencia objetos flyweights  Garante que os flyweights sejam compartilhados apropriadamente. Quando um cliente solicita um flyweight, um objeto FlyweightFactory fornece uma instância existente ou cria uma, se nenhuma existir. ConcretsFlyweights  Implementa a interface Flyweight  Armazena somente estados intrínsecos  Devem ser compartilháveis

12 Flyweight public interface class IF_Avatar { public void colorirCabelo( Color corAtual, Color corDesejada ); }

13 ConcreteFlyweight public class Avatar implements IF_Avatar { protected Corpo corpo = new Corpo(); protected Cabelo cabelo = new Cabelo(); public void colorirCabelo( Color corAtual, Color corDesejada ){ //animação da pintura do cabelo }

14 FlyweightFactory public class AvatarFactory { private HashMap avatares; public Avatar getAvatar(int tipo) { Avatar a; if ( avatares.containsKey( tipo) ) { a = avatares.get( tipo ); } else { a = new Avatar( tipo ); avatares.put( tipo, a); } return a; }

15 Cliente public class Usuario{ private Color corCabelo = new Color(000000); private Avatar avatar = avatarFactory.getAvatar (); public void colorirCabelo(Color corDesejada){ avatar.colorirCabelo(this.corCabelo, corDesejada); this.corCabelo = corDesejada; }

16 Conseqüências Podem introduzir custos de tempo de execução associados com a transferência, busca e/ou computação de estados intrínsecos Tais custos são compensados pelas economias de espaço, as quais aumentam a medida que mais flyweights são compartilhados

17 Referências Padrões de Projeto  Soluções reutilizáveis de software orientados a objetos  Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides http://sourcemaking.com/design_patterns/flyweight http://www.oodesign.com/flyweight-pattern.html


Carregar ppt "LEONARDO SIMAS JUSSI BARROS WESLLEY VIEIRA Flyweight."

Apresentações semelhantes


Anúncios Google