You are on page 1of 25

Evelyn Ketherine Ramos Matos Joo Marcos Rozo Perussi Taisa Claudia Machado

Prof. Alexandre Bernardes Padres de Projeto

Command um padro de projeto comportamental utilizado para melhorar o fluxo da aplicao encapsulando as requisies feitas como objetos. No command no importante como os objetos so chamados, pois todos os objetos so parametrizados implementando uma interface OO.

Encapsular um pedido como um objeto, deste modo deixando voc parametrizar os clientes com diferentes pedidos, filas ou logs e suportar operaes que podem ser desfeitas.

Conhecido tambm como: Action (Ao). Transaction (Transao).

O padro Command utilizado para gerenciar a relao de uma solicitao com os objetos quando h certa complexidade entre essas, isto , quando h muitas requisies. A utilizao desse padro tem por finalidade encapsular um comando de modo que esse comando possa ser utilizado em diversos objetos (DEITEL, 2003).

Quando existe uma interface grfica onde existe uma grande probabilidade de que o usurio faa vrias solicitaes inevitvel o aumento da complexidade.

Editor de Texto. Necessidade de programar vrias vezes o mesmo item.

Menus podem ser implementados facilmente com os objetos Command. Cada escolha em um menu uma instncia da classe MenuItem.

A aplicao configura cada MenuItem com uma instncia de uma subclasse concreta Command. A subclasse Command guarda a resposta do pedido e invoca uma ou mais operaes no receptor.

ColarCommand suporta passar um texto da rea de transferncia para dentro de um documento.

Algumas vezes um MenuItem precisa executar uma sequencia de comandos.

Definir uma classe de MacroCommand permitindo que um MenuItem executar nmeros variados de comandos.

Use o pattern Command quando voc quer: parametrizar objetos por uma ao a realizar, como objetos MenuItem visto anteriormente. Voc pode expressar tal parametrizao numa linguagem procedural com uma funo Callback, isto , uma funo que registrada em algum lugar para ser chamada mais tarde.

Especificar, enfileirar e executar pedidos em tempos diferentes. Se o receptor do pedido puder ser representado de uma maneira independente do address space (espao de endereamento), ento voc pode transferir um objeto Command desta requisio para um processo diferente e completar l a solicitao.

Suportar undo (desfazer). A operao Execute do Command pode armazenar o estado para reverter seus efeitos no prprio comando. A interface Command deve ter uma operao adicional Unexecute que reverte os efeitos de uma chamada prvia para Execute.

Estruturar um sistema em volta de operaes de alto nvel construdas sobre operaes primitivas. Tal estrutura, comum em sistemas de informao que suportam transaes. Uma transao encapsula um conjunto de alteraes de dados.

Command - declara uma interface para executar uma operao. ConcreteCommand (ColarCommand, AbrirCommand) - Define um encadeamento entre um objeto receptor e uma ao; Implementa Executar invocando operaes correspondentes no receptor.

Client (Applicao) - Cria um objeto ConcreteCommand e estabelece seu receptor. Invoker (MenuItem) - Pergunta o comando para realizar o pedido. Receiver (Documento, Applicao) - Sabe como realizar uma operao associada com o cumprimento de um pedido. Qualquer classe pode servir como receptor.

O Client cria um objeto ConcreteCommand especificando seu receptor. Um objeto Invoker armazena o objeto ConcreteCommand. O objeto ConcreteCommand invoca operaes nos seus receptores para cumprirem o pedido.

O Invoker distribui uma solicitao chamando Executar sobre o comando. Quando o comando est pronto para voltar uma ao, ConcreteCommand guarda o estado para voltar para o comando anterior invocando Executar.

O uso do padro Command apresenta as seguintes consequncias:

O Command separa o objeto que invoca a operao daquele que sabe execut-la. Commands so objetos de primeira classe. Eles podem ser manipulados ou estendidos como qualquer outro objeto.

Voc pode montar um comando composto a partir de outros comandos. Um exemplo a classe MacroCommand. Em geral, comandos compostos so uma instncia do padro Command. fcil adicionar novos comandos, porque voc no precisa mudar as classes existentes.

A reusabilidade no obtida pelo simples fato de desenvolvermos softwares orientados a objetos. O software deve ser planejado para ser reusvel. Design Patterns um mecanismo de alto nvel que rene experincias de sucesso para resolver problemas que notadamente se repetem em diversos projetos de software. Permite que os projetistas utilizem uma linguagem de alto nvel para discutirem sobre o projeto, porque o simples nome de um pattern representa um problema e como solucion-lo. A utilizao de patterns requer experincia do projetista em orientao a objetos, para que o mesmo possa identificar no seu projeto em particular onde os patterns podem ser aplicados.

http://www.gfsolucoes.net/trabalhos/padroes_de_projetos.pdf
http://www.batebyte.pr.gov.br/modules/conteudo/conteudo.php?conteudo=619 http://www.pedrojannotti.com/blog/command-pattern/ http://www.csi.uneb.br/padroes_de_projetos/command_2.html

You might also like