Intenções de padrões de projeto -
PorFernando Franzini em	27/11/2012
Mediator – sua intenção é definir um objeto utilizado para encapsular o relacionamento entre outros dois objetos, fazendo com que determinado relacionamento possa ser implementado de forma indireta, flexível e intercambial.
Memento – sua intenção é definir uma forma de capturar e armazenar o estado de um objeto, de forma que ele possa ser restaurado para o estado original anterior.
Observer – sua intenção é definir uma forma que possibilite um objeto agregador notificar e atualizar automaticamente outros objetos agregados dependentes quando ocorrer uma alteração no estado no objeto agregador.
State – sua intenção é definir uma forma que possibilite um objeto variar intercambialmente seus comportamentos quando mudanças internas no seu estado acontecerem.
Strategy – sua intenção é definir um objeto que possua determinados comportamentos que sofram variações intercambiais, dependendo de outros objetos clientes que os manipulam.
Template Method – sua intenção é definir objetos que implemente um algoritmo previamente formatado dentro de um comportamento, fazendo com que outros objetos possam, intercambialmente, substituir partes das funcionalidades desse algoritmo.
Visitor – sua intenção é definir uma forma que possibilite que diversas operações possam ser dinamicamente aplicadas para um objeto, sem a necessidade alterar sua estrutura de definição.
27 de setembro de 2011 às 11:55
Marcelo Hofer disse:
Muito bom seu artigo, mostrou que não é necessário saber de cor e salteado todas as implementações dos padrões de projeto, mas sim suas intenções.
Sou novo no estudo desse assunto e se voçês puderem me ajudar agradeço.
Vou tentar explicar uma situação de modelagem em que, possivelmente, possa ser usado um desses padrões de projeto (vou tentar ser sucinto):
O sistema é de Solicitação de Serviços.
1. Um usuário (proponente) solicita um serviço descrevendo-o (descrição das atividades, justificativa, prazo, nome da área, etc.).
2. Esta solicitação de serviço deve ser aprovada pelo gerente do proponente.
3. Uma vez aprovado, o serviço é encaminhado para o gerente da área do serviço, que vai liberar o serviço para um funcionário executar.
4. O funcionário recebe a ordem, executa o serviço e informa o gerente da área quando do término.
5. O gerente da área confirma a execução do serviço e informa o proponente.
6. O proponente confirma o recebimento do serviço alegremente e o processo termina.
Inicialmente pensei em usar um atributo para representar o estado do serviço ('solicitação', 'aprovado', 'liberado' and so on), mas a medida que o serviço muda estado ele pode ganhar novos atributos/associações.
Pensei também em usar o padrão State, mas ele está mais relacionado com os métodos que dependem do estado do objeto em questão (pode ser útil). Lendo o artigo achei que o padrão Memento pode se encaixar nessa situação, vou estudá-lo pra ver se realmente é conveniente.