Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

193
Visualizações
patrón de comando vs patrón de estrategia en Javascript

El patrón de estrategia y el patrón de comando son muy similares. Solo quiero confirmar mi comprensión de sus diferencias.

¿Puedo decir que con ambos patrones de diseño, ambos requieren implementar los métodos en la interfaz? La diferencia es que con el patrón de comando, con el constructor, debe crear la clase de comando, como AddThenMultiplyCommand a continuación, sin embargo, con el patrón de estrategia, no necesita crear la clase en el constructor, y cuando implementa la interfaz método, simplemente llama a la función directamente, como AddThenMultiplyStrategy , llama al método de adición y al método múltiple directamente sin crearlos en el constructor.

¿Es correcto mi entendimiento?

enlace de código: https://codesandbox.io/s/typescript-forked-c64qpw?file=/src/index.ts:0-1915

 interface Action { execute(currentValue: number): number; } class AddCommand implements Action { private valueToAdd; constructor(valueToAdd: number) { this.valueToAdd = valueToAdd; } execute(currentValue: number) { return currentValue + this.valueToAdd; } } class MultiplyCommand implements Action { private valueToMultiply; constructor(valueToMultiply: number) { this.valueToMultiply = valueToMultiply; } execute(currentValue: number) { return currentValue * this.valueToMultiply; } } class AddThenMultiplyCommand implements Action { private addCommand: AddCommand; private multiplyCommand: MultiplyCommand; constructor(valueToAdd: number, valueToMultiply: number) { this.addCommand = new AddCommand(valueToAdd); this.multiplyCommand = new MultiplyCommand(valueToMultiply); } execute(currentValue: number) { const newValue = this.addCommand.execute(currentValue); return this.multiplyCommand.execute(newValue); } } class AddThenMultiplyStrategy implements Action { private valueToAdd; private valueToMultiply; constructor(valueToAdd: number, valueToMultiply: number) { this.valueToAdd = valueToAdd; this.valueToMultiply = valueToMultiply; } execute(currentValue: number) { // run add const add = new AddCommand(this.valueToAdd); // run multiple const multiple = new MultiplyCommand(this.valueToMultiply); const newValue = multiple.execute(add.execute(currentValue)); return newValue; } } const add = new AddCommand(5); console.log(add.execute(6)); // 5+6 const multiple = new MultiplyCommand(5); console.log(multiple.execute(6)); // 5*6 const addThenMultiplyCommand = new AddThenMultiplyCommand(5, 6); console.log(addThenMultiplyCommand.execute(5)); // (5+5)*6 const addThenMultiplyStrategy = new AddThenMultiplyStrategy(5, 6); console.log(addThenMultiplyStrategy.execute(5)); // (5+5)*6
about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda