Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Command Pattern | Behavioral Patterns
JavaScript Design Patterns

bookCommand Pattern

The Command pattern is a behavioral design pattern that allows you to encapsulate a request as an object, giving you the flexibility to parameterize clients with different requests, queue or log requests, and support undoable operations. By turning requests into objects, you can decouple the sender of the request from the object that executes the action, leading to more modular and extensible code. This pattern is especially useful in scenarios such as implementing UI controls, task scheduling, and macro recording, where actions need to be executed, undone, or stored for later use.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
// Command interface class Command { execute() {} undo() {} } // Receiver: the object that performs the action class Light { turnOn() { console.log("The light is ON"); } turnOff() { console.log("The light is OFF"); } } // Concrete Command: encapsulates a request to turn on the light class TurnOnLightCommand extends Command { constructor(light) { super(); this.light = light; } execute() { this.light.turnOn(); } undo() { this.light.turnOff(); } } // Invoker: the button that triggers commands class Button { constructor(command) { this.command = command; } click() { this.command.execute(); } clickUndo() { this.command.undo(); } } // Usage const livingRoomLight = new Light(); const turnOnCommand = new TurnOnLightCommand(livingRoomLight); const button = new Button(turnOnCommand); button.click(); // Output: The light is ON button.clickUndo(); // Output: The light is OFF
copy

One of the most powerful features of the Command pattern is its support for undo and redo operations. Since each command is represented as a distinct object, you can keep a history of executed commands. To undo an action, you simply call the undo method on the last executed command object. Similarly, you can redo actions by re-executing the command. This approach makes it easy to implement complex features like multi-level undo/redo in applications such as text editors, drawing tools, or any interface where users may want to reverse or repeat their actions.

1. What is a key benefit of the Command pattern?

2. The Command pattern is especially useful for:

question mark

What is a key benefit of the Command pattern?

Select the correct answer

question mark

The Command pattern is especially useful for:

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 2

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Awesome!

Completion rate improved to 7.14

bookCommand Pattern

Свайпніть щоб показати меню

The Command pattern is a behavioral design pattern that allows you to encapsulate a request as an object, giving you the flexibility to parameterize clients with different requests, queue or log requests, and support undoable operations. By turning requests into objects, you can decouple the sender of the request from the object that executes the action, leading to more modular and extensible code. This pattern is especially useful in scenarios such as implementing UI controls, task scheduling, and macro recording, where actions need to be executed, undone, or stored for later use.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
// Command interface class Command { execute() {} undo() {} } // Receiver: the object that performs the action class Light { turnOn() { console.log("The light is ON"); } turnOff() { console.log("The light is OFF"); } } // Concrete Command: encapsulates a request to turn on the light class TurnOnLightCommand extends Command { constructor(light) { super(); this.light = light; } execute() { this.light.turnOn(); } undo() { this.light.turnOff(); } } // Invoker: the button that triggers commands class Button { constructor(command) { this.command = command; } click() { this.command.execute(); } clickUndo() { this.command.undo(); } } // Usage const livingRoomLight = new Light(); const turnOnCommand = new TurnOnLightCommand(livingRoomLight); const button = new Button(turnOnCommand); button.click(); // Output: The light is ON button.clickUndo(); // Output: The light is OFF
copy

One of the most powerful features of the Command pattern is its support for undo and redo operations. Since each command is represented as a distinct object, you can keep a history of executed commands. To undo an action, you simply call the undo method on the last executed command object. Similarly, you can redo actions by re-executing the command. This approach makes it easy to implement complex features like multi-level undo/redo in applications such as text editors, drawing tools, or any interface where users may want to reverse or repeat their actions.

1. What is a key benefit of the Command pattern?

2. The Command pattern is especially useful for:

question mark

What is a key benefit of the Command pattern?

Select the correct answer

question mark

The Command pattern is especially useful for:

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 2
some-alt