js中耦合与解耦问题总结
一.概念
一、耦合
1、耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象。
2、在软件工程中,对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护成本越高,因此对象的设计应使类和构件之间的耦合最小。
二、解耦
1、解耦,就是解除耦合关系。
2、在软件工程中,降低耦合度即可以理解为解耦,模块间有依赖关系必然存在耦合,理论上的绝对零耦合是做不到的,但可以通过一些现有的方法将耦合度降至最低。
4、观察者模式:观察者模式存在的意义就是「解耦」,它使观察者和被观察者的逻辑不再搅在一起,而是彼此独立、互不依赖。QQ消息推送来了之后,既要在通知栏上弹个推送,又要在桌面上标个小红点,也是观察者与被观察者的巧妙配合。
二.耦合类型及解耦
避免全局耦合
<script>var PAGE = 20;
</script>
<script src="main.js">
</script>
全局变量跨了两个文件使用,html和main.js,对于维护main.js的开发很难去理解PAGE变量的含义。 不利于维护。
通过事件侦听与事件抛发降低函数耦合
var o=new EventTarget();(function(){var b=20;init();function init(){//侦听o事件对象 o.addEventListener("javascript",jsHandler);}function dis(){//创建事件var evt=new Event("abcde");evt.b=b;//向document中间件抛发事件document.dispatchEvent(evt);}function jsHandler(e){console.log(e.a,"bbbbb");dis();}})();(function(){var a=10;init();function init(){//侦听 document中间件document.addEventListener("abcde",fn);dis();}function dis(){var evt=new Event("javascript");evt.a=a;o.dispatchEvent(evt);}function fn(e){console.log(e.b,"aaaa");}})(); */
js中耦合与解耦问题总结相关推荐
- 简单谈谈js中的MVC
MVC是什么? MVC是一种架构模式,它将应用抽象为3个部分:模型(数据).视图.控制器(分发器). 本文将用一个经典的例子todoList来展开(代码在最后). 一个事件发生的过程(通信单向流动): ...
- 话说js中的异步编程。
转载自品略图书馆 http://www.pinlue.com/article/2020/07/0412/3110968788347.html JS异步编程模型 在理解js异步编程时, 我们先再心中想一 ...
- js中的设计模式之中介者模式
Js中的中介者模式 定义 定义一个中介者对象来封装一系列对象的交互,把一批原来交互关系复杂的对象转换成一组松散耦合的对象,使他们变得易于维护和修改. 详细描述 在我们开发中经常会将对象拆分为更小的颗粒 ...
- 浅谈js中的异步编程
转载自品略图书馆 http://www.pinlue.com/article/2020/07/0412/3110968788347.html JS异步编程模型 在理解js异步编程时, 我们先再心中想一 ...
- JS中简单实现观察者模式
文章目录 JS中简单实现观察者模式 1.1什么是观察者模式 1.1.1观察者模式图解 1.1.2观察者模式文字阐述 1.2 JS中的代码实现 1.2.1目标类 1.2.2观察者类 1.2.3 HTML ...
- 后处理程序文件大小的变量_【每日一题】(17题)面试官问:JS中事件流,事件处理程序,事件对象的理解?...
关注「松宝写代码」,精选好文,每日一题 作者:saucxs | songEagle 2020,实「鼠」不易 2021,「牛」转乾坤 风劲潮涌当扬帆,任重道远须奋蹄! 一.前言 2020.12.23 立 ...
- jQuery 对AMD的支持(Require.js中如何使用jQuery)
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一个可用的模块化 JavaScript 的解决方案. AMD 模块格 ...
- java 什么是耦合_什么是耦合、解耦
什么是耦合.解耦 一.耦合 1.耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象. 2.在软件工程中,对象之间的耦合度就是对象之间的依赖性.对象之间的耦合越高,维护 ...
- 如何正确使用Node.js中的事件
by Usama Ashraf 通过Usama Ashraf 如何正确使用Node.js中的事件 (How to use events in Node.js the right way) Before ...
最新文章
- android json转db,Android Room:将json结果转换为db对象的有效方法
- 使用docker制作hexo镜像
- 腾讯优图吴永坚:迈向深度学习,我们面临模型训练与推荐的双重考验
- python递归合并排序_python 归并排序的递归法与迭代法(利用队列)实现,以及性能测试...
- 新浪微博Python客户端接口OAuth2
- depends用于测试程序运行所缺少的文件,可以帮我们很快找到问题
- main方法 如何去掉http debug日志_在MyBatis中如何使用collection标签实现嵌套查询?...
- linux Ubuntu安装ftp并将本地文件上传到云服务器
- 什么是多核电脑?什么是64位电脑?
- 辐射3计算机,辐射3与道德
- 一个简单的WeakList的实现
- excel或wps查找文本字符串子串或拆分字符串公式
- redis 入门指南第二版 学习记录3 列表类型
- vivado下载bit和ltx失败
- python局域网收集数据_Python实现扫描局域网活动ip
- Markdown缩进控制
- 2022软件测试校招笔试题-软件测试基本理论
- 计算机水平毕业研究生7分落户,应届生们注意啦!只要72分就可以落户上海
- LA 5713 秦始皇修路
- fiddler抓取https,提示“CA 根证书不在受信任的存储区域”的解决方法