Padrões Command, Memento e Chain of Responsibility
Command (233) - Comportamental
- Objetivo: Encapsular uma
requisição como um objeto permitindo que as requisições sejam
enfileiradas, registradas, desfeitas, etc.
- Motivação: aplicações com menus
- Também conhecido como: Action, Transaction.
- Exemplos: Gimp ou Photoshop. GoF pag. 234 e 235.
- Usos conhecidos:
- undo
- logging
- menus
- distribuição de tarefas (opcionalmente com prioridades)
- balanceamento de carga
Memento (283) - Comportamental
- Objetivo: Sem violar encapsulamento, capturar e externalizar o
estado interno de um objeto de forma a restaurar este estado
posteriormente.
- Motivação: undo
- Também conhecido como: Token
- Estrutura: GoF pag. 285.
- Usos conhecidos: undo, migração de objetos, persistência e recuperação, etc.
Chain of Responsibility (223) - Comportamental
- Objetivo: desacoplar o emissor de uma requisição de seu receptor dando a mais de um objeto a oportunidade para processá-la.
- Cria-se uma cadeia de objetos receptores e a requisição vai sendo passada de um a outro até que alguém a processe.
- Exemplo do GoF na página 223: tratamento do evento Help numa aplicação de janelas.
- Ver diagramas de classe e sequência na wikipedia
- Dizemos que a requisição (ou mensagem) tem um destinatário implícito.
- Padrão relacionado: é implementado frequentemente junto com o Composite.
- Um outro exemplo: logging
Exercício:
Projete uma arquitetura de software para um domínio qualquer de sua escolha utilizando pelo menos 2 dos 3 padrões acima. Crie um diagrama de classes UML para representar tal arquitetura. Identifique pelo menos um benefício e pelo menos um malefício de adotar cada um dos padrões.
Last modified: Tuesday, 24 October 2023, 9:58 AM