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
- JavaScript学习之设计模式->命令模式
- JAVASCRIPT设计模式详解之命令模式
- JavaScript设计模式之-----命令模式
- JavaScript学习之设计模式->观察者模式
- JavaScript学习之设计模式->代理模式
- 设计模式学习笔记之命令模式
- 设计模式学习笔记之命令模式
- 设计模式学习笔记之命令模式
- javascript 设计模式-命令模式
- 14.Javascript设计模式之命令模式----Command
- JavaScript设计模式学习一之接口
- 设计模式学习--命令模式
- 设计模式学习-----命令模式
- 设计模式学习--命令模式
- 设计模式学习--命令模式
- 学习设计模式-命令模式
- 设计模式学习:命令模式
- 设计模式之命令模式
- Android四大组件
- 2016第七届蓝桥杯C/C++ B组省赛题解(自解)第一题
- java经典算法1_斐波那契数列
- 选择排序(二)
- 收藏一些实用的 bash 别名和函数
- JavaScript学习之设计模式->命令模式
- 《React-Native系列》React-Native实战系列博客汇总
- <!DOCTYPE> 标签属性总结
- 排序算法
- (Go)不要使用append插入元素
- Linux x86内核终止D状态的进程
- 第12天 Java中的多态
- MVP架构-Android官方MVP项目和响应式MVP-RxJava项目架构分析对比解读
- 是时候跳出舒适区了