A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Padrão de Projeto Memento

Apresentações semelhantes


Apresentação em tema: "Padrão de Projeto Memento"— Transcrição da apresentação:

1 Padrão de Projeto Memento
Projeto de Sistemas de Software Manoel Teixeira de Abreu Netto Thiago Pinheiro de Araújo

2 Memento Propósito Capturar e armazenar externamente o estado de um objeto, de modo que o estado anterior deste objeto possa ser posteriormente restaurado Sem violar encapsulamento © LES/PUC-Rio

3 Memento Motivação Armazenar o histórico do estado de um objeto.
Fornecer funcionalidade de restauração. Exemplos: Armazenamento de estados a serem restaurados, por exemplo, em um banco de dados. Undo (IHC), caso você queria manter uma forma de desfazer ações realizadas no objeto, é possível salvando tais estados a cada modificaçao, isto pode ser feito em conjunto com o padrão Command [2] Instruções passo-a-passo (IHC), fornecer a possibilidade do usuário retornar a um passo. Possivelmente um passo realizado altera o estado de um ou mais objetos. O padrão Memento permite que o estado anterior do objeto seja recuperado ao retornar um passo sem que o encapsulamento seja violado [2] © LES/PUC-Rio

4 Memento Aplicabilidade
De forma geral, onde existe a necessidade de salvar o estado de um objeto, ou parte dele, para possivelmente restaurar depois Onde uma interface de obtenção do estado do objeto comprometeria seu encapsulamento © LES/PUC-Rio

5 Memento Estrutura © LES/PUC-Rio

6 Memento Participantes Memento Originator Caretaker
Guarda um estado do objeto Originator Protege o encapsulamento do estado, não permitindo que outros objetos além do Originator tenham acesso Originator Cria um Memento contendo a representação do seu estado atual Usa o Memento para restaurar seu estado Caretaker É responsável por armazenar os Mementos gerados por um Originator Não é capaz de interpretar o estado armazenado no Memento © LES/PUC-Rio

7 Memento Colaborações O Caretaker pede ao Originator o memento do seu estado atual. Caso seja necessário restaurar o estado, o Caretaker pede ao Originator que carregue o estado passado como parâmetro. © LES/PUC-Rio

8 Memento Conseqüências Vantagens: Desvantagens:
O estado do Originator é guardado fora dele sem a perda do encapsulamento. O Originator é simplificado por não ter a responsabilidade de gerenciamento de estados anteriores. Desvantagens: O uso de mementos pode ser uma solução cara, dependendo do tamanho e do número de estados a serem salvos. O Caretaker ganha a responsabilidade de deleção dos mementos armazenados. Em determinadas linguagens pode ser difícil garantir que apenas o Originator será capaz de acessar o memento. Ex: Em C++ pode-se fazer um cast para void *. Em Java pode-se fazer um cast para Object. © LES/PUC-Rio

9 Memento © LES/PUC-Rio

10 Memento Bibliografia [1] Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software, 2st edition, Addison-Wesley Professional Computing Series, 1998. [2] SILVA, A. C. DA ; SILVA, Júnia Coutinho Anacleto ; PENTEADO, R. A. D. ; SILVA, S. R. P. DA . Relacionamento de Padrões de Engenharia de Software e de Interação Humano-Computador para o Desenvolvimento de Sistemas Interativos. In: SugarLoaf PLoP V CONFERÊNCIA LATINO-AMERICANA EM LINGUAGENS DE PADRÕES PARA PROGRAMAÇÃO, 2005, Campos do Jordão. Anais da Conferência Latino-Americana em Linguagens de Padrões para Programação, 2005. © LES/PUC-Rio

11 Fim!


Carregar ppt "Padrão de Projeto Memento"

Apresentações semelhantes


Anúncios Google