Passe as solicitações do cliente em um objeto, permitindo que você parametrize o cliente com diferentes solicitações. Usado para dissociar "solicitante de comportamento" e "implementador de comportamento", o acoplamento frouxo entre os dois pode ser alcançado para se adaptar às mudanças. Separe os fatores em mudança e imutável.
1. Função
Comando
Define a interface do comando e declara o método de execução.
ConcretEncommand
O objeto de implementação da interface de comando é uma implementação "virtual"; Geralmente mantém o receptor e chama a função do receptor para concluir a operação a ser executada pelo comando.
Receptor
Receptor, o objeto que realmente executa o comando. Qualquer classe pode se tornar um receptor, desde que possa implementar as funções correspondentes exigidas pelo comando.
Invocador
O objeto de comando é necessário para executar a solicitação e geralmente mantém o objeto de comando e pode conter muitos objetos de comando. É aqui que o cliente realmente aciona o comando e exige que o comando execute a operação correspondente, o que significa que é equivalente a usar a entrada do objeto de comando.
Cliente
Crie um objeto de comando específico e defina o receptor do objeto de comando. Observe que este não é um cliente em nosso sentido convencional, mas está montando o objeto de comando e o receptor. Talvez seja melhor chamar esse cliente de assembler, porque o cliente que realmente usa o comando aciona a execução do Invocador.
2 vantagens
3. Desvantagens <r /> Usando o modo de comando pode fazer com que alguns sistemas tenham muitas classes de comando específicas. Como uma classe de comando específica é necessária para cada comando, alguns sistemas podem exigir um grande número de classes de comando específicas, o que afetará o uso do modo de comando.
4. Situação aplicável
5. Aplicação <br /> A simulação inclui comandos de energia, desligamento e alteração para a operação da TV. O código é o seguinte
// interface para executar o comando comando interface comando {void Execute (); } // Receptor de comando receptor public Class TV {public int currentChannel = 0; public void Turnon () {System.out.println ("O televisino está ativado."); } public void turnOff () {System.out.println ("A televisão está desligada."); } public void Changechannel (int canal) {this.currentChannel = canal; System.out.println ("agora canal de TV é" + canal); }} // Desligue o comando concreteCommand public Class Commandon implementa o comando {private TV mytv; public Commandon (TV TV) {mytv = TV; } public void Execute () {mytv.turnon (); }} // Desligue o comando concreteCommand public class CommandOff implementa comando {private TV mytv; public CommandOff (TV TV) {mytv = TV; } public void Execute () {mytv.Turnoff (); }} // comando de comando de canal concreteCommand public class CommandChange implementa comando {private TV MyTV; canal privado int; public CommandChange (TV TV, INT Channel) {mytv = TV; this.channel = canal; } public void Execute () {mytv.Changechannel (canal); }} // pode ser considerado como um controle remoto de controle público controle de classe {private comando oncommand, OffCommand, Changechannel; controle público (comando on, comando desligado, canal de comando) {oCommand = on; OffCommand = OFF; Changechannel = canal; } public void Turnon () {Oncommand.execute (); } public void turnOff () {OffCommand.execute (); } public void Changechannel () {Changechannel.execute (); }} // Classe de teste da classe Public client {public static void main (string [] args) {// Receptor de comando receptor tv mytv = new tv (); // comando de poder concreteCommondon em = new commandon (mytv); // comando power-off concreteCommond comandoff off = new commandoff (mytv); // canal comando comando comando concreteCommond CommandChange canal = new commandChange (mytv, 2); // Comando Control Object Invocer Control Control = Novo Control (ON, OFF, Channel); // Power-O-On Control.Turnon (); // Switch Channel Control.Changechannel (); // desligar o controle.Turnoff (); }} Resultados da execução
O televisino está ligado.
Agora o canal de TV é 2
A televisão está desligada.
6. Resumo
1. A essência do modo de comando é encapsular o comando e separar a responsabilidade de emitir o comando e a responsabilidade de executar o comando.
2. Cada comando é uma operação: a parte solicitadora emite uma solicitação, exigindo que uma operação seja executada; A parte receptora recebe a solicitação e executa a operação.
3. O modo de comando permite que a parte solicitadora seja independente da parte receptora, para que a parte solicitadora não precise conhecer a interface da parte que recebe a solicitação, nem precisa saber como a solicitação foi recebida, se, quando e como a operação foi executada.
4. O modo de comando torna a solicitação em si um objeto, que pode ser armazenado e passado como outros objetos.
5. A chave do modo de comando é introduzir uma interface de comando abstrata e o remetente programa para a interface de comando abstrata. Somente comandos específicos que implementam a interface de comando abstrata podem estar associados ao receptor.
O exposto acima é uma introdução detalhada ao padrão de design de comando Java, espero que seja útil para o aprendizado de todos.