资讯专栏INFORMATION COLUMN

耦合

dinfer / 1744人阅读

摘要:最近在看设计模式和开发实践里面说到设计模式的主题总是把不变的事物和变化的事物分离开这就涉及到了解耦耦合是一个很宽泛的概念在此只为记录在中出现的各种类型的耦合数据耦合一个模块访问另一个模块时彼此之间是通过简单的数据参数不是控制参数公共数据结构

最近在看JavaScript设计模式和开发实践,里面说到"设计模式的主题总是把不变的事物和变化的事物分离开",这就涉及到了解耦.耦合是一个很宽泛的概念,在此只为记录在js中出现的各种类型的耦合.
数据耦合:一个模块访问另一个模块时,彼此之间是通过简单的数据参数(不是控制参数/公共数据结构/外部变量)来交换输入输出信息的.网上搜到的解释,不是很懂!

function create(id) {
  var box = document.createElement("div");
  box.setAttribute("id", id);
  return box;
}
function append(id) {
  var box = create(id);
  document.body.appendChild(box);
}

此处的耦合是因为append函数访问了create函数.
解决方案:

create函数不变,
function append(obj) {
  document.body.appendChild(obj);
}
var box = create(id);
append(box);

控制耦合:如果一个模块通过传送开关/标志/名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合.网上搜到的解释,不是很懂!

var y = 1;
function a(x) {
  if (x) {
    y = 1;
  } else {
    y = 0;
  }
}

function b() {
  if (y == 1) {
    console.log("y is 1");
  } else {
    console.log("y is 0");
  }
}

解决方案:
1.将被调用模块内的判定上移到调用模块中进行

干掉var y = 1;和函数b
function a(x) {
  if (x) {
    console.log("y is 1");
  } else {
    console.log("y is 0");
  }
}

2.被调用模块分解成若干单一功能的模块
内容耦合:当一个模块直接修改或者操作另一个模块的数据,或者直接转入另一个模块时,就发生了内容耦合.此时,被修改的模块完全依赖于修改它的模块.额额额,下面的例子和数据耦合的例子有啥不同???

function a() {
  return "kk";
}
function b() {
  alert(a());
}
b();

解决方案:

a函数不变
function b(p1) {
  alert(p1);
}
b(a());

还有 标记耦合 非直接耦合 外部耦合 公共耦合,这些都没有在网上找到合适的js的例子,希望大家补充!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/81832.html

相关文章

  • #yyds干货盘点# 模块内聚和耦合的基础知识

    摘要:模块内聚和耦合的基础知识是软件评测师考试的重要考点,经常出现在上午场的客观选择题当中。外部耦合模块间通过软件之外的环境联结如将模块耦合到特定的设备格式通信协议上时称为外部耦合。这种模块之间的耦合称之为内容耦合。 模块内聚和耦合的基础知识是软件评测师考试的重要考点,经常出现在上午场的客观选择题当中。模块独立是指模块只完成系统...

    waltr 评论0 收藏0
  • 基于案例的软件构造教程第二章课后题答案

    摘要:解释模块耦合性的含义,对不同的耦合举例说明耦合性,也叫耦合度,是对模块间关联程度的度量。模块间的耦合度是指模块之间的依赖关系,包括控制关系调用关系数据传递关系。软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。 ...

    mist14 评论0 收藏0
  • <<编写可维护的javascript>> 笔记5(UI层的松耦合)

    摘要:由于第四章太稀松平常了于是就直接跳到第五章了这里我就草草的说一下第四章的几个点吧在严格模式的应用下不推荐将用在全局作用域中相等推荐尽量使用和守则如果是在没有别的方法来完成当前任务这时可以使用原始包装类型不推荐创建类型时用等创建类型从这一章节 由于第四章太稀松平常了, 于是就直接跳到第五章了.这里我就草草的说一下第四章的几个点吧 在严格模式的应用下 不推荐将use strict;用在全...

    saucxs 评论0 收藏0
  • “乐高式松耦合”架构实战

    摘要:二乐高式松耦合架构落地快速实现需求与需求实现越来越慢的矛盾如何解决最终白山的产品架构聚焦在解耦上,方便平台快速迭代,减少系统间依赖程度,打通无关联项目,为运营互动提供高效支持,确保服务质量。 作者:王康 白山联合创始人兼产品副总裁。 王康先生主要负责产品的完善与升级、产品开发流程把控及进度协调、产品设计改进及定期优化、产品全生命周期管理等工作。他带领团队实现白山首款产品CDN-X的多项...

    xiaochao 评论0 收藏0
  • “乐高式松耦合”架构实战

    摘要:二乐高式松耦合架构落地快速实现需求与需求实现越来越慢的矛盾如何解决最终白山的产品架构聚焦在解耦上,方便平台快速迭代,减少系统间依赖程度,打通无关联项目,为运营互动提供高效支持,确保服务质量。 作者:王康 白山联合创始人兼产品副总裁。 王康先生主要负责产品的完善与升级、产品开发流程把控及进度协调、产品设计改进及定期优化、产品全生命周期管理等工作。他带领团队实现白山首款产品CDN-X的多项...

    Pikachu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<