JS的命令模式概念与用法分析

这次给大家带来JS的命令模式概念与用法分析,使用JS命令模式概念与用法分析的注意事项有哪些,下面就是实战案例,一起来看一下。

这篇文章主要介绍了JS设计模式之命令模式概念与用法,简单描述了命令模式的原理、功能并结合javascript实例形式分析了命令模式相关定义与使用技巧,需要的朋友可以参考下

本文实例讲述了JS设计模式之命令模式概念与用法。分享给大家供大家参考,具体如下:

客户创建命令;调用者执行该命令;接收者在命令执行时执行相应操作
简单命令对象一般用来消除二个对象(调用者和接收者)之间的耦合,而复杂的命令对象则一般用来封装不可分的或事务性的指令。

命令模式的主要用途是把调用对象(用户界面、API和代理等)与实现操作的对象隔离开。凡是两个对象间互动方式需要有更高的模块化程度时都可以用到这种模式。

命令的意思是用一个简单方法或函数去执行和这个命令相关的实际操作。就如同用遥控器打开电视一样,只按一个按键就可以打开电视,简单、方便。它具体的实现操作我们不用关心。那是有电视器来处理的。电视对遥控器提供了一个接口(信号),遥控器只需要在点击时实现这个接口就可以了。

JS的命令模式概念与用法分析

Command:定义命令的接口,声明执行的方法。
ConcreteCommand:命令接口实现对象,是“虚”的实现;通常会持有接收者,并调用接收者的功能来完成命令要执行的操作。
Receiver:接收者,真正执行命令的对象。任何类都可能成为一个接收者,只要它能够实现命令要求实现的相应功能。
Invoker:要求命令对象执行请求,通常会持有命令对象,可以持有很多的命令对象。这个是客户端真正触发命令并要求命令执行相应操作的地方,也就是说相当于使用命令对象的入口。
Client:创建具体的命令对象,并且设置命令对象的接收者。注意这个不是我们常规意义上的客户端,而是在组装命令对象和接收者,或许,把这个Client称为装配者会更好理解,因为真正使用命令的客户端是从Invoker来触发执行

模式分析

1.命令模式的本质是对命令进行封装,将发出命令的责任和执行命令的责任分割开。
2.每一个命令都是一个操作:请求的一方发出请求,要求执行一个操作;接收的一方收到请求,并执行操作。
3.命令模式允许请求的一方和接收的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否被执行、何时被执行,以及是怎么被执行的。
4.命令模式使请求本身成为一个对象,这个对象和其他对象一样可以被存储和传递。
5.命令模式的关键在于引入了抽象命令接口,且发送者针对抽象命令接口编程,只有实现了抽象命令接口的具体命令才能与接收者相关联。

模式优点

1.降低对象之间的耦合度。
2.新的命令可以很容易地加入到系统中。
3.可以比较容易地设计一个组合命令。
4.调用同一方法实现不同的功能

// 命令var CreateCommand = function( receiver ){ this.receiver = receiver;}CreateCommand.prototype.execute = function() { this.receiver.action();}// 接收者 电视var TVOn = function() {}TVOn.prototype.action = function() {  alert("TVOn");}// 接收者 电视var TVOff = function() {}TVOff.prototype.action = function() {  alert("TVOff");}// 调用者 遥控器var Invoker = function( tvOnCommand, tvOffCommand ) {  this.tvOnCommand = tvOnCommand;  this.tvOffCommand = tvOffCommand;}Invoker.prototype.tvOn = function() {  this.tvOnCommand.execute();}Invoker.prototype.tvOff = function() {  this.tvOffCommand.execute();}

登录后复制

执行Client

var tvOnCommand = new CreateCommand( new TVOn() );var tvOffCommand = new CreateCommand( new TVOff() );var invoker = new Invoker( tvOnCommand, tvOffCommand );invoker.tvOn();invoker.tvOff();

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

JS仿今日头条手机端主页界面

React开发时的eslint配置

动态显示select下拉列表数据

以上就是JS的命令模式概念与用法分析的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2779522.html

(0)
上一篇 2025年3月8日 15:48:27
下一篇 2025年3月8日 15:48:33

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • fullpage.js的滚屏方式

    这次给大家带来fullpage.js的滚屏方式,实现fullpage.js的滚屏注意事项有哪些,下面就是实战案例,一起来看一下。 这两天公司网页改版用到fullpage.js这个滚屏插件,页面内容整屏的滚动,不成问题,各种设置在网上也都有文…

    2025年3月8日
    200
  • 用AngularJS在前端界面获取密码

    这次给大家带来用AngularJS在前端界面获取密码,用AngularJS在前端界面获取密码的注意事项有哪些,下面就是实战案例,一起来看一下。 本文实例讲述了AngularJS实时获取并显示密码的方法。分享给大家供大家参考,具体如下: 1、…

    2025年3月8日
    200
  • JS获取select下拉框中第一顺位元素内的值

    这次给大家带来JS获取select下拉框中第一顺位元素内的值,JS获取select下拉框中第一顺位元素内值的注意事项有哪些,下面就是实战案例,一起来看一下。 本文实例讲述了JavaScript实现获取select下拉框中第一个值的方法。分享…

    2025年3月8日
    200
  • Git通俗易懂的用法

    这次给大家带来Git通俗易懂的用法,使用Git的注意事项有哪些,下面就是实战案例,一起来看一下。 前端在使用webpack、gulp、vue-cli、react-native cli等自动化工具时会依赖大量的npm三方插件,而这些插件在安装…

    编程技术 2025年3月8日
    200
  • Egg.js里如何获取HTTP参数

    这次给大家带来,的注意事项有哪些,下面就是实战案例,一起来看一下。 这次给大家带来Egg.js里如何获取HTTP参数,Egg.js里获取HTTP参数的注意事项有哪些,下面就是实战案例,一起来看一下。 在Egg.js框架中,由于 Contro…

    编程技术 2025年3月8日
    200
  • js实现读取xml文件内容

    这次给大家带来js实现读取xml文件内容,主要以代码的形式体现,下面就是实战案例,一起来看一下。 其中html代码如下所示 W3School.com.cn Internal NoteTo: From: Message: if (window…

    2025年3月8日
    200
  • 关于js可视距离的方法总结

    这次给大家总结关于js可视距离的知识点,下面就是具体内容,一起跟随小编来看一下吧。 JQuery监听页面滚动总结 1、当前滚动的地方的窗口顶端到整个页面顶端的距离:   var winPos = $(window).scrollTop();…

    编程技术 2025年3月8日
    200
  • JavaScript之call和apply

    要想深入的去学习JavaScript语言,有一个很重要的知识点,就是对“call()”和“apply()”的理解,有时候我们在看别人、或者是一些开源框架的源代码的时候,也是大量出现这两个方法,那这两个方法是干嘛的,到底有什么作用?本文主要内…

    2025年3月8日 编程技术
    200
  • Node.js实现注册邮箱激活功能

    在做自己的node项目极客教程时,需要开发一个注册邮箱激活的功能,这个功能非常常见,当我们注册一个账号时,肯定会有这步,下面看下如何实现这个功能。 1. 注册邮箱 先注册一个支持发送验证邮件的邮箱,我这里注册的是网易的163邮箱,所以下面都…

    2025年3月8日
    200
  • JavaScript中五大常见函数详解

    在 javascript 中有一些问题会被拿出来经常讨论,这些问题每个人都有不同的思路,想要理解这些问题,最好的方法就是自己实现一遍,话不多说,开始正题。 数组扁平化 数组扁平化有很多方法,但最终最好的方法就是递归,实现一个指定深度的扁平化…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论