JavaScript学习之设计模式->命令模式

来源:互联网 发布:centos 查看内核版本 编辑:程序博客网 时间:2024/06/05 00:38

命令模式->的角色分为:调用者-命令类(执行命令的接口和类)->接收者。

调用者调用命令接口,命令接口调用接收者,真正的处理在接收者中完成。举个例子,比如一个机器人,需要走路,跑步,做饭,打扫卫生....等等。人操控机器人的这些动作,其中人就是调用者,机器人的走,跑,做饭,打扫卫生这些操作本来可以放在一个函数或者类中实现。但是将他分开为走路函数(类),跑步函数(类),做饭函数(类),打扫卫生函数(类)。然后将机器人声明一个单独的函数(类)作为接收者,在各跑步走路做饭函数中,调用该机器人的相应方法。

该模式,是将调用者人和接收者机器人之间的耦合度降低。



Javascript代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>命令模式</title><script type=text/javascript charset=utf-8>//命令接口// var commond = function(){// }// commond.prototype = {// execute:function(){// }// }//实现命令接口var DoMeal = function(robot){this.robot = robot;}DoMeal.prototype = {constructor:DoMeal,execute:function(){this.robot.action("domeal");}}//走路var Walk = function(robot){this.robot = robot;}Walk.prototype = {constructor:Walk,execute:function(){this.robot.action("walk");}}//跑步var Run = function(robot){this.robot = robot;}Run.prototype = {constructor:Run,execute:function(){this.robot.action("run");}}//打扫卫生var Cleanup = function(robot){this.robot = robot;}Cleanup.prototype = {constructor:Cleanup,execute:function(){this.robot.action("cleanup");}}//机器人类,接收者var Robot = function(){}Robot.prototype = {constructor:Robot,action:function(e){alert("...." + e + ".....");//输出到客户端,显示 给用户}}var r = new Robot();var meal = new DoMeal(r);var go = new Walk(r);var rungo = new Run(r);var clean = new Cleanup(r);</script></head><body><input type="button" value="做饭" id="domeal"/><input type="button" value="走路" id="walk"/><input type="button" value="跑步" id="run"/><input type="button" value="打扫卫生" id="cleanup"/></body><script type="text/javascript">(function(){document.getElementById("domeal").onclick = function(){meal.execute()};document.getElementById("walk").onclick = function(){go.execute()};document.getElementById("run").onclick = function(){rungo.execute()};document.getElementById("cleanup").onclick = function(){clean.execute()};}());</script></html>



命令模式的优点:将行为请求者和行为实现者解耦。
               命令的添加特别方便,并且可以方便的制定各种命令和利用现有命令组合出新的命令。
                如果针对每一类具有共同接口的接受者制作一个调用者,可以控制命令的执行情况。


以上仅为个人学习理解

0 0
原创粉丝点击