140 likes | 364 Views
SNAPSHOT. PADRÃO DE PROJETO. SNAPSHOT. Origem. O padrão Snapshot é originado do Memento, documentado em GoF ( Gang of Four) 95. A grosso modo a tradução para o português brasileiro seria “Instantâneo”. SNAPSHOT. Objetivo.
E N D
SNAPSHOT PADRÃO DE PROJETO
SNAPSHOT Origem • O padrão Snapshot é originado do Memento, documentado em GoF (Gang ofFour) 95. • A grosso modo a tradução para o português brasileiro seria “Instantâneo”.
SNAPSHOT Objetivo • Capturar o estado de um objeto sendo que o mesmo poderá ser restaurado quando necessário.
SNAPSHOT Aplicação • O Snapshot é utilizado quando se está trabalhando com aplicações longas que não se tem ideia de quantos dias irá levar para se concluir. • Exemplo: Jogo de vídeo-games onde o jogador vai passando por fases, salva o jogo e quer retomar de onde parou dias atrás.
SNAPSHOT Aplicação (Exemplo)
SNAPSHOT Funcionamento • O Snapshot pode ser implementado de duas maneiras: através do Memento ou com Serialização.
SNAPSHOT Estrutura Genérica Snapshot Usando Memento
SNAPSHOT ParticipantesSnapshot Usando Memento • Originator:é uma classe cuja as informações do estado deve ser conservado e restaurado. • Memento:Seu objetivo é encapsular snapshots do estado de um objeto Originator. • Caretaker:Instâncias desta classe mantêm uma coleção de objetos de Memento.
SNAPSHOT Estrutura Genérica Snapshot Usando Serialização
SNAPSHOT ParticipantesSnapshot Usando Serialização • Target: É o objeto alvo da serialização e desserialização. • ObjectOutputStream: descobre e acessa as informações de um objeto Target e grava-o em um fluxo de bytes com informações adicionais. • OutputStream: Instância responsável por diferenciar entre salvar na memória ou em forma de arquivo. • ObjectInputStream: instâncias dessas classes serializadas lêem informações do estado a partir de um fluxo de bytes e restauram-no.
SNAPSHOT Consequências • As duas formas de implementar o padrão Snapshot trazem muito da complexidade de salvar e restaurar o estado de um objeto. • O padrão Snapshot não é muito apropriado para desfazer uma sequência de comandos. Fazendo muitos snapshots de um objeto ele pode consumir uma quantidade grande de armazenamento.
SNAPSHOT Exemplo Genérico
SNAPSHOT Referências • GRAND, Mark. Patterns in Java: a Catalog of Reusable Desing Patterns Illistrated with UML. Vol. 1. Wiley, 1998. • http://www.pg.cefetpr.br/coinf/simone/patterns/memento.php • http://eulerhm.googlepages.com/PadresdeProjeto-Comportamentais.pdf • http://martinfowler.com/ap2/snapshot.html
SNAPSHOT Componentes • Rick Andrade • Vagner Fonseca • Yuri Guimarães • Projeto Avançado de Sistemas