加入收藏 | 设为首页 | 会员中心 | 我要投稿 四平站长网 (https://www.0434zz.com.cn/)- 云服务器、对象存储、基础存储、视频终端、数据应用!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

高速发展会取代人类吗?

发布时间:2021-02-07 13:40:32 所属栏目:外闻 来源:互联网
导读:方向: 双向依赖(差) 相互依赖的两个元素不能独立行动,在微服务系统架构的系统中类级别不会产生特别复杂的问题,但是在模块 or 系统级别就特别容易受到变化带来的影响。 举例:A - B,A调用B的b接口,B的b接口依赖A的a接口,如果a b接口都要变更,两个系统

方向:

  • 双向依赖(差)
    • 相互依赖的两个元素不能独立行动,在微服务系统架构的系统中类级别不会产生特别复杂的问题,但是在模块 or 系统级别就特别容易受到变化带来的影响。
    • 举例:A <-> B,A调用B的b接口,B的b接口依赖A的a接口,如果a b接口都要变更,两个系统如何发布?A依赖B先发布,B也依赖A先发布,相互依赖的两个元素不能独立行动。
  • 循环依赖(更差)
    • 循环依赖比双向依赖的的链路更长,影响的范围更大。
  • 单向依赖(好)

链路:

  • 深度
    • B调用A.getC().getD().getE().getF() 获取到F。
  • 广度
    • 在链路变宽的过程中不加以约束和管理很容易产生大杂烩的元素,也很容易产生双向和循环依赖。

方式:

  • 内容耦合(高)
    • 当一个模块直接使用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部。
  • 共享耦合/公共耦合(高)
    • 指通过一个公共数据环境相互作用的那些模块间的耦合。
    • 公共耦合的复杂程度随耦合模块的个数增加而增加。
  • 控制耦合(中)
    • 指一个模块调用另一个模块时,传递的是控制变量(如开关、标志等),被调模块通过该控制变量的值有选择地执行块内某一功能;
  • 特征耦合/标记耦合(中)
    • 指几个模块共享一个复杂的数据结构,如高级语言中的数组名、记录名、文件名等这些名字即标记,其实传递的是这个数据结构的地址;
  • 数据耦合(低)
    • 指模块借由传入值共享数据,每一个数据都是最基本的数据,而且只分享这些数据(例如传递一个整数给计算平方根的函数)。
  • 非直接耦合(低)
    • 两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。耦合度最弱,模块独立性最强。
  • 无耦合(无)
    • 模块完全不和其他模块交换信息。

解决不良依赖:

  • 管理复杂的依赖关系
    • 依赖方向:使用单向依赖,去除或弱化双向依赖,不使用循环依赖。
    • 依赖链路:遵守最少认知原则。
    • 依赖方式:尽量使用数据耦合,少用控制和特征耦合,控制公共耦合的范围,不使用内容耦合,如果依赖的对象不稳定使用非直接耦合来弱化耦合紧密程度。
  • 分配正确的职责减少不必要的依赖:专家、创建者。
  • 通过其他原则和模式减少不稳定元素带来的影响:高内聚、纯虚构、控制器、多态、间接性、最少认知。

高内聚

内聚是对元素职责的相关性和集中度的度量。

问题:怎么样保持对象是有重点的、可理解的、可维护的,并且能够支持低耦合?

解决方案:按照相关性分配职责,可保持较高的内聚。

优点:

  • 分解后的元素更加简单易于理解和维护。
  • 按照相关性拆分可以提高重用性。

相关原则和模式:单一职责原则、关注点分离、模块化。

低内聚的缺点:内聚性较低的类要做许多不相关的工作,或需要完成大量的工作,这样的类会导致以下问题:

  • 难以理解
  • 难以复用
  • 难以维护
  • 经常会受到变化影响

(编辑:四平站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读