Artur Costa George Dias Objetivo Define a estratégia de manter uma cópia, na memória local, de objetos buscados de fora de um programa, como num servidor remoto ou banco de dados. Permite o acesso rápido ao objeto reduzindo o custo de sua construção no processo de busca. Definição Manter na memória a informação que levaria um longo tempo pra buscar, para que o próximo acesso seja mais rápido é chamado Caching. Decidir quais e quantos objetos manter na memória é chamado Cache management. A figura mostra como o padrão trabalharia no exemplo do produto: • • • • • 1 O ID do produto é passado para o método getProductInfo do objeto ProductCacheManager. 1.1 O método getProductInfo tenta recuperar a descrição do objeto de um objeto Cache. Se a tentativa tiver sucesso o método retorna o objeto. 1.2 Se não for possível recuperar a o objeto da descrição na cache, ele chama o método getProductInfo do objeto ProductInfoFetcher para buscar a descrição. 1.3 Muitos cache managers implementam uma política de limitar o número de objetos na cache pois um grande número de objetos pode ser um desperdício de memória. Se o cache manager decidir que os objetos recuperados devam ser guardados na cache mas a cache já contém o número suficiente de objetos, o cache manager não aumenta o número de objetos na cache. Ele escolhe um objeto para remover da cache e passa seu ID para o método RemoveProductInfo do objeto Cache. 1.4 E quando o cache manager decide que o objeto buscado deve ser guardado na cache ele chama o método addProductInfo do objeto Cache. Estrutura Genérica Estrutura geral do padrão: Participantes • • • • • • Client : Classe que acessa objetos da classe CacheManager ObjectKey: Identifica o objeto a ser buscado ou criado. Object: Classe que representa o objeto em questão. CacheManager: Responsável por atender todas as requisições do cliente buscando as informações primeiramente no Cache, caso haja falha, recorre ao ObjectCreator. ObjectCreator: Classe responsável por criar objetos que não estão no cache. Cache : Classe responsável por gerenciar os objetos armazenados na cache . Padrões Relacionados Façade Template Method Virtual Proxy Object Replication Optimistic Concurrency Ephemeral Cache Item Exemplo http://www.developer.com/design/article. php/630481/Pattern-Summaries-CacheManagement.htm http://www.designpatterns.dk/java_patter ns.html Grand,Mark. Patterns in Java vol.1