LEONARDO SIMAS JUSSI BARROS WESLLEY VIEIRA Flyweight.

Slides:



Advertisements
Apresentações semelhantes
Soluções elegantes para problemas recorrentes
Advertisements

Padrão de Projeto Iterator
Design Patterns Patrícia Mateus nº3343 Carla Guerreiro nº3157
Engenharia de Software
Java - Interfaces Prof. Msc. Flávio Viotti.
Projeto de Sistemas de Software
Projeto de Sistemas de Software
Padrão de Projeto Interpreter
Elisabeth Suescún Leandra Mara da Silva
Projeto de Sistemas de Software Trabalho de Padrões de Projeto
Projeto de Sistemas de Software Kelly Leal Leandra Mara da Silva
Padrão Bridge (Handle/Body)
Padrão de Projeto Memento
Padrões de Projeto Mediator.
Padrões de Projeto Prototype.
Padrões de Projeto Adapter.
Abstract Factory – Gustavo Lopes Mourad.
Kleinner Farias e Raphael do Vale
Padrão de Projeto Iterator
Projeto de Sistemas de Software Leandra Mara da Silva
Abstract Factory Intenção: fornecer uma interface comum para a criação de famílias de objetos relacionados ou dependentes, sem especificar suas classes.
Singleton.
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Aula 8 Polimorfismo.
Padrão de Projeto Chain of Responsability e Template Method
Concorrência em Java Threads em Java.
Programação Orientada a Objetos com Java
Fundamentos da Engenharia de Software
JAVA Orientação a Objetos
Vector To Raster Factory & Strategy Eric Silva Abreu São José dos Campos - 15 de dezembro de 2006.
Chain of Responsibility
Linguagens Orientadas a Objeto
Integração com Banco de Dados
Introdução à Programação Orientada a Objetos com Java
Tipos Abstratos de Dados
Estudo de Caso: um editor de documentos
Classes, Objetos, Atributos e Métodos JAVA
DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade Universidade.
Adriano S. Castro André Abdalla
Design Pattern 4 Fundamentos da Engenharia de Software –Leonardo de França Rosa –Rodrigo de Carvalho Rocha.
Orientação a Objetos e Java Graduação em Ciência da Computação
PHP Orientado a Objetos Análise e Desenvolvimento de Sistemas Prof
Orientação a Objetos Parte I
Programação Orientada a Objetos - Java
Design Pattern (Padrões de Projeto)
Object Pool Padrões de Projeto.
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota (com material da Qualiti Software Process)
Padrão de Projeto Iterator Projeto de Sistemas de Software Thiago Pinheiro de Araújo.
Trabalho Final de Padrões de Projeto
Padrões de Projeto Abstract Factory.
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Bruno Inojosa MCP .NET Framework
Modificadores Programação II.
Organização do Ambiente de Execução para Linguagens OO Objeto: –Grupo de variáveis de instância, aos quais métodos de instância estão atachados; Variável.
Padrões de projeto M.Sc. Sílvio Bacalá Jr..
1 Design Patterns Israel Rios. 2 Origens A idéia de padrões de projeto não teve origem na ciência da computação Christopher Alexander A Pattern Language:
CURSO DE ESPECIALIZAÇÃO EM TECNOLOGIA JAVA DESIGN PATTERNS Prof. Cesar Augusto Tacla UTFPR/Campus Curitiba.
Teste De Sistemas Web Com JUnit E Suas Extensões
Padrões de Projeto. O que são?  Soluções provenientes de diversos projetos e utilizados por diversos programadores;  Documentados em catálogos como.
Aula 7 – Padrão Abstract Factory
UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis
Padrões de Projeto de Criação Padrões de Projeto Orientados a Objetos Prof a. Danielle Martin Universidade de Mogi das Cruzes.
Jadson Xavier Muller Oliveira.  É difícil encontrar alguma definição consensual de padrão.  Definição aceitável: - São idéias que foram úteis em algum.
1 Introdução aos Padrões de Projetos Créditos: Prof. Fabio Kon - IME/USP Adaptações: Prof. Nécio de Lima Veras.
Introdução a Padrões de Projeto Padrões de Projeto Orientado a Objetos Profa. Danielle Martin Universidade de Mogi das Cruzes.
IDENTIFICAÇÃO DOS RELACIONAMENTOS Nesta atividade devem ser definidos os relacionamentos entre as classes Podem ser representados pela: – associação, –
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Singleton e Template Method
Transcrição da apresentação:

LEONARDO SIMAS JUSSI BARROS WESLLEY VIEIRA Flyweight

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

Problema new object() Nome 1 Nome 2 Nome 3

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

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

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

Flyweight Estrutura Simplificada

Flyweight Estrutura mais complexa

Flyweight Diagrama de sequência

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

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

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

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 }

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; }

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; }

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

Referências Padrões de Projeto  Soluções reutilizáveis de software orientados a objetos  Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides