The Command Pattern is a behavioral design pattern that encapsulates requests as
objects, allowing for greater flexibility in software design. By turning
requests into objects, this pattern enables features like parameterization,
queuing, and logging of operations. It is particularly useful in scenarios where
actions need to be executed, delayed, or undone dynamically.
typeCommand={execute():void;};classInvoker{execute(command: Command):void{command.execute();}}classReceiver{action1():void{console.log("action1");}action2():void{console.log("action2");}}classConcreteCommandAimplementsCommand{constructor(privatereadonlyreceiver: Receiver){}execute():void{this.receiver.action1();}}classConcreteCommandBimplementsCommand{constructor(privatereadonlyreceiver: Receiver){}execute():void{this.receiver.action2();}}constclient={run(action: number):void{constreceiver=newReceiver();constccmdA=newConcreteCommandA(receiver);constccmdB=newConcreteCommandB(receiver);constinvoker=newInvoker();switch(action){case1:{invoker.execute(ccmdA);break;}case2:{invoker.execute(ccmdB);break;}default:{console.log("Invalid action");}// Handle invalid actions
}}};constexample={run():void{client.run(1);client.run(2);client.run(3);// Example of invalid action
}};example.run();