Baixe o app para aproveitar ainda mais
Prévia do material em texto
Modelagem de Padrões de Projeto Aula 34 - Memento Memento (aka Lembrança, Retrato ou Snapshot) Criacionais Ilustrações: SHVETS (2022) Prototype Abstract Factory Builder Factory Method Singleton Command Comportamentais Chain of Responsibility Memento Observer Visitor Template Method Iterator State Strategy Mediator ✓ ✓ ✓ ✓ ✓ ✓ ✓ Estruturais Adapter Flyweight Bridge FacadeDecorator Composite Proxy ✓ ✓ ✓ ✓ ✓✓ ✓ ✓ ✓ ✓ ✓✓ ● É um padrão de projeto que permite salvar e restaurar o estado anterior de um objeto. ● Separa a implementação da execução do algoritmo. Imagem de kjpargeter no Freepik Definição Imagem de kjpargeter no Freepik Exemplo - Imagem de kjpargeter no Freepik Estrutura A classe Originadora pode produzir retratos de seu próprio estado, bem como restaurar seu estado de retratos quando necessário. Fonte: SHVETS (2022) Estrutura O memento é um objeto de valor que age como um retrato do estado da originadora. É uma prática comum fazer o memento imutável e passar os dados para ele apenas uma vez, através do construtor. Fonte: SHVETS (2022) Estrutura O memento é um objeto de valor que age como um retrato do estado da originadora. É uma prática comum fazer o memento imutável e passar os dados para ele apenas uma vez, através do construtor. Fonte: SHVETS (2022) Estrutura A cuidadora sabe não só “quando” e “por quê” capturar o estado da originadora, mas também quando o estado deve ser restaurado. Fonte: SHVETS (2022) ✓ Viabiliza a obtenção de um “retrato” do estado de execução de um objeto sem que seja necessário violá-lo. ✓ Mantém a originadora leve ao delegar à cuidadora o cuidado sobre os estados. Im ag em d e p ik is u p er st ar n o F re ep ik (Des) Vantagens de utilizar o padrão ✖ Alto consumo de RAM se houver necessidade de guardar vários estados ✖ Cuidadoras devem estar sempre acompanhando o ciclo de vida dos objetos originadores e isto pode causar overhead. ✖ Dificuldade em garantir o estado interno do memento. Atividade 44 Considere o pseudocódigo disponibilizado no link a seguir: https://gist.github.com/mmakita/9cbd388b2d954cecbfd1e8a5edc37529 Modele o diagrama UML da implementação. https://gist.github.com/mmakita/9cbd388b2d954cecbfd1e8a5edc37529 D úv id as ? Referências SHVETS, Alexander. Mergulho nos Padrões de Projeto. Edição 2023-1.24. Kyiv: Refactoring.guru. 2022.
Compartilhar