introduzir
O modo de comando é definido como: usado para encapsular uma solicitação em um objeto, para que você possa parametrizar o cliente com diferentes solicitações; Filas ou solicitações de log e execute operações revogáveis. Em outras palavras, o modo de mudança foi projetado para encapsular a chamada, solicitação e operação de uma função em um único objeto e, em seguida, executar uma série de processamento no objeto. Além disso, o objeto de comando e o objeto receptor podem ser dissociados chamando objetos que implementam funções específicas.
texto
Vamos mostrar esse padrão através do programa de compra de veículos, definindo primeiro a classe de operação específica da compra de veículos:
A cópia do código é a seguinte:
$ (function () {
var carmanager = {
// Solicitar informações
requestInfo: function (modelo, id) {
retornar 'as informações para' + modelo +
'com id' + id + 'é foobar';
},
// Compre um carro
Buyvehicle: function (modelo, id) {
retornar 'você comprou com sucesso o item'
+ id + ', um modelo' +;
},
// Organize View
Visualização de arranjo: função (modelo, id) {
retornar 'Você reservou com sucesso uma visão de'
+ modelo + '(' + id + ')';
}
};
}) ();
Vamos dar uma olhada no código acima. Simplesmente executamos os comandos do gerente chamando funções. No entanto, em alguns casos, não queremos chamar diretamente os métodos dentro do objeto. Isso aumentará a dependência entre os objetos. Agora vamos expandir este CarManager para aceitar quaisquer solicitações de processamento de objetos CarManager, incluindo modelo e ID do carro. De acordo com a definição do padrão de comando, esperamos implementar as seguintes chamadas de função:
A cópia do código é a seguinte:
CarManager.Execute ({CommandType: "Buyvehicle", Operand1: 'Ford Escort', Operand2: '453543'});
De acordo com esse requisito, podemos implementar o método CarManager.Execute dessa maneira:
A cópia do código é a seguinte:
CarManager.execute = function (comando) {
Return CarManager [Command.Request] (Command.model, command.carid);
};
Após a transformação, a chamada é muito mais simples e as seguintes chamadas podem ser implementadas (é claro, alguns detalhes de exceção ainda precisam ser melhorados):
A cópia do código é a seguinte:
CarManager.execute ({request: "ArranjeViewing", Model: 'Ferrari', Carid: '145523'});
CarManager.execute ({request: "requestInfo", modelo: 'ford mondeo', carid: '543434'});
CarManager.execute ({request: "requestInfo", modelo: 'Ford escolt', carid: '543434'});
CarManager.Execute ({request: "Buyvehicle", Model: 'Ford Escort', Carid: '543434'});
Resumir
O modo de comando é mais fácil de projetar uma fila de comando e é mais fácil contar com os comandos no log quando necessário e permite que a parte que aceita a solicitação decida se deve chamá -lo e também pode implementar a revogação e a redefinição da solicitação. Além disso, como as classes específicas adicionadas não afetam outras classes, é fácil de implementar.
Mas o princípio do desenvolvimento ágil nos diz para não adicionar funções baseadas em adivinhação e realmente indesejadas ao código. Se você não tiver certeza se um sistema precisa de um modo de comando, geralmente não deve se apressar para implementá -lo. De fato, não é difícil implementar esse modo quando é necessário. É significativo apenas refatorar o código original em um modo de comando quando é realmente necessário, como desfazer, restaurar operações e outras funções.