Tip:
Highlight text to annotate it
X
Olá pessoal, tudo bem? iremos demonstrar agora
como funciona o padrão de projeto command e como ele deve ser implementado
Assim como os demais padrões, O command tem 4 elementos essenciais
tem um nome, tem um problema, tem uma solução e tem as consequências
o command é um padrão bem simples e muito utilizado
e tem como objetivo encapsular uma solicitação como um objetivo
E que permite parametrizar outros objetos com diferentes solicitações
enfileirar ou registrar solicitações e implementar recursos de cancelamento de operações
ou seja, o objetivo do padrão é transformar um método de uma classe em um objeto
o qual pode executar a ação deste método
em algumas bibliografias vocês podem encontrar o padrão command com outras nomenclaturas
como action e transaction
O problema que o command se propõe a resolver é que algumas vezes é necessário emitir solicitações
pra objetos sem nada saber sobre a operação que está sendo solicitada ou sobre seu receptor
a partir do diagrama de classes do padrão command podemos verificar a função de cada componente e como eles se relacionam
o padrão command possui 5 participantes
O Command: declara uma interface para a execução de uma operação
Concretecommand: define uma vinculação entre um objeto, um Receiver e uma ação
e tambem implementa "execute" através da invocação da operação correspondente no Receiver
temos o Client que cria o objeto COncretecommand e estabelece o seu receptor
temos o invoker, que solicita ao Command a execução da solicitação
e Receiver, que sabe como executar as operações associadas a uma solicitação
qualquer classe pode funcionar como um receiver
como podemos ver nesse diagrama de sequência o client gera um Command
passando Receiver
a principal consequencia do command é que ele desacopla o objeto que invoca a operação
que sabe como executa-la. Ao vizualizar o diagrama de sequência isso ficará mais claro
primeiro o client cira um novo comando especificando seu Receiver
em seguida este Command é armazenado em um Invoker. O Invoker, quando quer chama a ação
do Receiver, ele usa o método execute e o Command que por sua vez chama a ação do Receiver
deste modo o Invoker não conhece como funciona a ação e tambem não conhece o Receiver
Command são objetos de primeira classe ou seja, podem ser manipulados e estendidos como qualquer outro objeto
você pode montar comandos para formar um comando composto ou seja, um Macrocommand
é facil acrescentar novos Commands porque você não tem que mudar classes existentes
A partir de agora vamos ver um exemplo da aplicação do padrão command
Ou seja, um portão que pode ser aberto ou fechado através de um controle
Bem, nosso exemplo do projeto do portão eletrônico
nós temos aqui 6 componentes, temos Command que é a interface que tem apenas as assinaturas dos métodos
execute e undo, sendo que undo é opcional e que o método execute que é implementado na classe ConcreteCommand
Temos agora as classes abrircommand e fecharcommand
Essas classes implementam a interface command
que possuem um objeto do tipo portão que é o receiver do projeto
Essas classes imlementam o execute chamando a ação abrir ou fechar portão que apenas o Receiver sabe como executar
percebam que as classes abrirCommand e fechrCommand apenas chamam os métodos de portão
esses métodos estão implementados somente aqui
somente portão que é o Receiver sabe como executa-los
Ou seja, temos aqui o método abir e o método fechar
temos tambem a classe Controle. A classe controle faz o papel de Invoker pois ela possui um conjunto de comandos
que chamam ométodo execute
Conversamos por telefone.
Muito bem, venham comigo.
Vamos levá-la ao teatro.
A Dra. Gorski vai querer dar uma olhada nela.
Ela gosta de ver todas as garotas novas.
Não se preocupe, pai. Vai dar tudo certo.
Temos tudo sob controle por aqui.
Está bem, venham, sigam-me.
Então, isso é o que chamamos de "teatro".
Mentirosa!
Garotas! Sim, vai, vai.
Ei, vem cá.
Garotas. Comportem-se!
-Parem com isso. Parem com isso. -Você pode detê-las?
Lynn!
Amy!
Sentem-se!
Sente-se.
Enfim. Usamos esse espaço pra elas se socializarem.
A Dra. Gorski usa-o para ajudá-las a lidar com os problemas delas.
Terapia polonesa.
É um ótimo show ficar olhando elas atuando
se tocando ou se batendo, algo assim.
Dra. Gorski pensa que isso ajuda. Eu não tenho tanta certeza.
Mas se ela faz ou não, não importa muito para você.
Uma vez que tratarmos dos nossos negócios...
-não vai sobrar nada dessa aqui. -Bom.
Vai estar no paraíso, se entende o que quero dizer.
E todos os seus problemas... acabarão, certo?
Eu sei que combinamos 1400 pelo telefone.
Mas estou correndo um grande risco aqui.
Então, terão que ser 2.000 pelo menos.
Do que está falando? Não tente me enganar, tínhamos um acordo.