![Page 1: SNAPSHOT PADRÃO DE PROJETO. Origem O padrão Snapshot é originado do Memento, documentado em GoF (Gang of Four) 95. A grosso modo a tradução para o](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc15f497959413d8e78e5/html5/thumbnails/1.jpg)
SNAPSHOTPADRÃO DE PROJETO
![Page 2: SNAPSHOT PADRÃO DE PROJETO. Origem O padrão Snapshot é originado do Memento, documentado em GoF (Gang of Four) 95. A grosso modo a tradução para o](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc15f497959413d8e78e5/html5/thumbnails/2.jpg)
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
![Page 3: SNAPSHOT PADRÃO DE PROJETO. Origem O padrão Snapshot é originado do Memento, documentado em GoF (Gang of Four) 95. A grosso modo a tradução para o](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc15f497959413d8e78e5/html5/thumbnails/3.jpg)
Objetivo
Capturar o estado de um objeto sendo que o mesmo poderá ser restaurado quando necessário.
SNAPSHOT
![Page 4: SNAPSHOT PADRÃO DE PROJETO. Origem O padrão Snapshot é originado do Memento, documentado em GoF (Gang of Four) 95. A grosso modo a tradução para o](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc15f497959413d8e78e5/html5/thumbnails/4.jpg)
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
![Page 5: SNAPSHOT PADRÃO DE PROJETO. Origem O padrão Snapshot é originado do Memento, documentado em GoF (Gang of Four) 95. A grosso modo a tradução para o](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc15f497959413d8e78e5/html5/thumbnails/5.jpg)
Aplicação (Exemplo)
SNAPSHOT
![Page 6: SNAPSHOT PADRÃO DE PROJETO. Origem O padrão Snapshot é originado do Memento, documentado em GoF (Gang of Four) 95. A grosso modo a tradução para o](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc15f497959413d8e78e5/html5/thumbnails/6.jpg)
Funcionamento
O Snapshot pode ser implementado de duas maneiras: através do Memento ou com Serialização.
SNAPSHOT
![Page 7: SNAPSHOT PADRÃO DE PROJETO. Origem O padrão Snapshot é originado do Memento, documentado em GoF (Gang of Four) 95. A grosso modo a tradução para o](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc15f497959413d8e78e5/html5/thumbnails/7.jpg)
Estrutura Genérica Snapshot Usando Memento
SNAPSHOT
![Page 8: SNAPSHOT PADRÃO DE PROJETO. Origem O padrão Snapshot é originado do Memento, documentado em GoF (Gang of Four) 95. A grosso modo a tradução para o](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc15f497959413d8e78e5/html5/thumbnails/8.jpg)
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
![Page 9: SNAPSHOT PADRÃO DE PROJETO. Origem O padrão Snapshot é originado do Memento, documentado em GoF (Gang of Four) 95. A grosso modo a tradução para o](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc15f497959413d8e78e5/html5/thumbnails/9.jpg)
Estrutura Genérica Snapshot Usando Serialização
SNAPSHOT
![Page 10: SNAPSHOT PADRÃO DE PROJETO. Origem O padrão Snapshot é originado do Memento, documentado em GoF (Gang of Four) 95. A grosso modo a tradução para o](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc15f497959413d8e78e5/html5/thumbnails/10.jpg)
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.
![Page 11: SNAPSHOT PADRÃO DE PROJETO. Origem O padrão Snapshot é originado do Memento, documentado em GoF (Gang of Four) 95. A grosso modo a tradução para o](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc15f497959413d8e78e5/html5/thumbnails/11.jpg)
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
![Page 12: SNAPSHOT PADRÃO DE PROJETO. Origem O padrão Snapshot é originado do Memento, documentado em GoF (Gang of Four) 95. A grosso modo a tradução para o](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc15f497959413d8e78e5/html5/thumbnails/12.jpg)
Exemplo Genérico
SNAPSHOT
![Page 13: SNAPSHOT PADRÃO DE PROJETO. Origem O padrão Snapshot é originado do Memento, documentado em GoF (Gang of Four) 95. A grosso modo a tradução para o](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc15f497959413d8e78e5/html5/thumbnails/13.jpg)
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
![Page 14: SNAPSHOT PADRÃO DE PROJETO. Origem O padrão Snapshot é originado do Memento, documentado em GoF (Gang of Four) 95. A grosso modo a tradução para o](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc15f497959413d8e78e5/html5/thumbnails/14.jpg)
Componentes Rick Andrade Vagner Fonseca Yuri Guimarães
Projeto Avançado de Sistemas
SNAPSHOT