用闭包来实现命令模式

时间:2022-08-27 22:43:26

在JavaScript设计模式当中闭包的使用非常的广泛。

命令模式:把请求封装成对象,从而分离请求的发起者和请求的接受者

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>命令者模式</title>
</head>
<body>
<p>点击执行弹出打开电视机,点击撤销弹出关闭电视机</p>
<button id="execute">执行</button>
<button id="undo">撤销</button>
<script type="text/javascript">
window.onload
=function(){
//receiver
var Tv={
open:
function(){
alert(
"打开电视机");
},
close:
function(){
alert(
"关闭电视机");
}
};

var createCommand=function(receiver){
var execute=function(){
return receiver.open();
};
var undo=function(){
return receiver.close();
};
return{
execute:execute,
undo:undo
}
}

var setCommond=function(command){
document.getElementById(
"execute").onclick=function(){
command.execute();
}
document.getElementById(
"undo").onclick=function(){
command.undo();
}
}

setCommond(createCommand(Tv));
}
</script>
</body>
</html>