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
 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
Participantes
Snapshot 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
Participantes
Snapshot Usando Serialização

Target: É o objeto
desserialização.
alvo
da
serialização
e

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/p
atterns/memento.php
 http://eulerhm.googlepages.com/Padres
deProjeto-Comportamentais.pdf
 http://martinfowler.com/ap2/snapshot.ht
ml
SNAPSHOT
Componentes
 Rick
Andrade
 Vagner Fonseca
 Yuri Guimarães
 Projeto
Avançado de Sistemas
Download

SNAPSHOT - Colegiado de Sistemas de Informação