Triển khai Command Pattern
trong Javascript như thế nào?
Triển khai Command Pattern
trong Javascript như thế nào?
Command Pattern là một mẫu thiết kế hành vi (behavioral design pattern) trong lập trình hướng đối tượng, nó cho phép bạn đóng gói các yêu cầu dưới dạng một đối tượng, từ đó cho phép người dùng tham chiếu đến các yêu cầu này, xếp hàng hoặc ghi nhật ký chúng, và hỗ trợ các hoạt động hoàn tác.
Để triển khai Command Pattern trong JavaScript, bạn cần tạo ra các đối tượng command với một phương thức execute chính và một hoặc nhiều đối tượng receiver mà command sẽ thao tác trên đó. Bạn cũng có thể cần một Invoker để quản lý và gọi các command.
Đầu tiên, bạn cần một interface cho các command với ít nhất một phương thức execute
.
class Command {
execute() {
throw new Error('This method must be overwritten!');
}
}
Sau đó, tạo các lớp concrete command thực thi interface command và triển khai phương thức execute
.
class TurnOnCommand extends Command {
constructor(receiver) {
super();
this.receiver = receiver;
}
execute() {
this.receiver.turnOn();
}
}
class TurnOffCommand extends Command {
constructor(receiver) {
super();
this.receiver = receiver;
}
execute() {
this.receiver.turnOff();
}
}
Tạo một hoặc nhiều receiver chứa logic thực sự để thực hiện các hành động.
class Light {
turnOn() {
console.log('The light is on');
}
turnOff() {
console.log('The light is off');
}
}
Invoker sẽ gọi command mà không cần biết chi tiết về cách thức thực hiện.
class RemoteControl {
submit(command) {
command.execute();
}
}
Cuối cùng, bạn có thể sử dụng Command Pattern để thực thi các hành động.
const light = new Light();
const turnOnLight = new TurnOnCommand(light);
const turnOffLight = new TurnOffCommand(light);
const remote = new RemoteControl();
remote.submit(turnOnLight); // Output: The light is on
remote.submit(turnOffLight); // Output: The light is off
Command Pattern trong JavaScript giúp tách biệt phần logic yêu cầu thực thi từ phần logic thực sự thực hiện hành động. Điều này không chỉ giúp mã nguồn dễ bảo trì và mở rộng hơn mà còn hỗ trợ thêm các tính năng như hoàn tác và ghi nhật ký một cách dễ dàng.
senior
Gợi ý câu hỏi phỏng vấn
Chưa có bình luận nào