SNAPSHOT PADRÃO DE PROJETO. Origem O padrão Snapshot é originado do Memento, documentado em GoF...

Post on 22-Apr-2015

105 views 0 download

Transcript of SNAPSHOT PADRÃO DE PROJETO. Origem O padrão Snapshot é originado do Memento, documentado em GoF...

SNAPSHOTPADRÃ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 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

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.

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

SNAPSHOT