精华内容
参与话题
问答
  • 什么是耦合、解耦

    万次阅读 多人点赞 2018-09-01 10:32:57
    一、耦合 1、耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象。 2、在软件工程中,对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护成本越高,因此对象的...

    一、耦合

    1、耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象。

    2、在软件工程中,对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护成本越高,因此对象的设计应使类和构件之间的耦合最小。

    3、分类:有软硬件之间的耦合,还有软件各模块之间的耦合。耦合性是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间的接口的复杂程度、调用模块的方式以及哪些信息通过接口。

    二、解耦

    1、解耦,字面意思就是解除耦合关系。

    2、在软件工程中,降低耦合度即可以理解为解耦,模块间有依赖关系必然存在耦合,理论上的绝对零耦合是做不到的,但可以通过一些现有的方法将耦合度降至最低。

    3、设计的核心思想:尽可能减少代码耦合,如果发现代码耦合,就要采取解耦技术。让数据模型,业务逻辑和视图显示三层之间彼此降低耦合,把关联依赖降到最低,而不至于牵一发而动全身。原则就是A功能的代码不要写在B的功能代码中,如果两者之间需要交互,可以通过接口,通过消息,甚至可以引入框架,但总之就是不要直接交叉写。

    4、观察者模式:观察者模式存在的意义就是「解耦」,它使观察者和被观察者的逻辑不再搅在一起,而是彼此独立、互不依赖。比如网易新闻的夜间模式,当用户切换成夜间模式之后,被观察者会通知所有的观察者「设置改变了,大家快蒙上遮罩吧」。QQ消息推送来了之后,既要在通知栏上弹个推送,又要在桌面上标个小红点,也是观察者与被观察者的巧妙配合。

     

    展开全文
  • 耦合是什么?如何做到解耦

    千次阅读 2018-12-10 12:22:38
    在软件工程中,降低耦合度即可以理解为解耦,也就是将强耦合变为弱耦合的过程。模块间有依赖关系必然存在耦合,理论上的绝对零耦合是做不到的,但可以通过一些现有的方法将耦合度降至最低 2.为什...

    一、耦合
    耦合指的是两个类之间的联系的紧密程度;
    强耦合:类之间存在着直接关系
    弱耦合:在两个类的中间加入一层,将原来的直接关系变成间接关系,使得两个类对中间层是强耦合,两类之间变为弱耦合
    二、解耦
    1.什么是解耦
    在软件工程中,降低耦合度即可以理解为解耦,也就是将强耦合变为弱耦合的过程。模块间有依赖关系必然存在耦合,理论上的绝对零耦合是做不到的,但可以通过一些现有的方法将耦合度降至最低
    2.为什么要进行解耦
    在软件工程中,对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护成本越高,因此对象的设计应使类和构件之间的耦合最小,把关联依赖降到最低,而不会产生牵一发而动全身的现象
    3.如何解耦
    解耦的核心思想:若要减少代码的耦合度,一定要尽量做到各个功能的代码不能交叉编写,编写封闭的代码。
    方法:
    1)设立接口
    2)引入框架
    3)避免使用全局变量
    4)避免相似函数

    展开全文
  • 3种解耦方式

    千次阅读 2015-07-15 16:21:18
    2. Qt中信号槽的方式来解耦。  3. Spring中是用在jvm和java程序中在架一层容器,让用户代码跑在容器中,的方式来解耦。实现方式是反射。sofa,osgi也是这样。 因为计算机中的任何问题都可以通过,在加一层中间层来...

    1. 用生产者消费者模式,用阻塞队列来实现。

    2. Qt中信号槽的方式来解耦。

            3. Spring中是用在jvm和java程序中在架一层容器,让用户代码跑在容器中,的方式来解耦。实现方式是反射。sofa,osgi也是这样。

    因为计算机中的任何问题都可以通过,在加一层中间层来实现。

    展开全文
  • 为什么需要解耦

    万次阅读 2018-07-14 08:57:16
    版权声明:本文为 小异常 ... 为什么需要解耦?回答这个问题,我们必须得知道什么是解耦。相信大多数小伙伴们都在软件工程中听过这样一句话 —— “高内聚,低耦合”。那么什么是 “高内聚” ,什么是 “低耦合”...

    版权声明:本文为 小异常 原创文章,非商用自由转载-保持署名-注明出处,谢谢!
    本文网址:https://blog.csdn.net/sun8112133/article/details/81040275

      为什么需要解耦?回答这个问题,我们必须得知道什么是解耦。相信大多数小伙伴们都在软件工程中听过这样一句话 —— “高内聚,低耦合”。那么什么是 “高内聚” ,什么是 “低耦合” 呢? 别着急,请听我慢慢道来。

    本篇大体可以分为三大部分:

      一、什么是内聚

      二、什么是耦合

      三、使用高内聚,低耦合的好处





    一、什么是内聚

      内聚,从字面上来看有聚精会神、聚在一起的意思,那么 高内聚也就是尽可能的使一个模块或一个类再或者是一个方法只专注做好一件事

      我们在设计软件的时候一定要采取【多聚合、少继承】的基本原则,因为使用 “聚合” 的这种方式能够使业务逻辑更加清晰,更有利于我们后期的扩展和维护。


    二、什么是耦合

      耦合,从字面上来看有藕断丝连的意思,“耦” 这个字在中国汉语里指的是两个人在一起耕地,他俩各干各的互不影响,这也是“耦合”的由来。那么 低耦合也就是尽可能的使每个模块之间或者每个类之间再或者是每个方法之间的关联关系减少,这样可以使各自尽可能的独立,一个地方出错,不会影响全部,更能提高代码的重用性。

      我们在设计软件的时候也一定要注意各模块之间一定尽可能的减少联系,防止一个模块出现的问题影响到其他模块。


      

    三、使用高内聚,低耦合的好处

    1、生活中的 “高内聚,低耦合”

      军队的存在是为了保家卫国,我们国家的军队分为海军、陆军、空军等部队,他们各自的职责是不一样的。海军负责海上作战,陆军负责陆地作战,空军负责空中作战,他们之间的联系很少。

      我们可以想想为什么要这样安排呢?如果我们国家的军队不分的那么细,每支部队都有在海上、陆地、空中作战的士兵,如果我们和日本在海上大战,我们还需要从各个部队中抽取能够在海上作战的士兵,再组成一支海上抗日军这样的部队,抽取出来的士兵的战斗力各有不一,还需要一个适应的过程,我们想想这支一盘散沙的部队能取得胜利嘛?打仗在于兵贵神速,这样的一支部队还是一盘散沙呢,怎么能做到兵贵神速呢?那么我们可以早早的就把他们分为海军、陆军、空军,海军就负责在海上作战,陆军就负责在陆地作战,空军就负责在空中作战,我们如果和日本进行海上大战,我们直接派海军过去不就可以了嘛?

      根据我们刚才的分析,证明了军队分为海军、陆军、空军的好处,那么我们再想想,他们之间的联系为什么会很少呢?咱们还是假设一下,如果每个部队总是依赖其他几个部队,不会独立战斗,那么如果某一天海军被派出去执行任务,美国这个时候空军来袭,我们的空军难道要等海军回来再战斗嘛?如果那样的话为时晚矣,我们国家早就被侵略了。所以他们之间应该独立作战,互相依赖的情况应该要减少。

      这就是生活中的 “高内聚,低耦合” 的例子。类似这样的例子还有很多,只要我们留心观察就能发现。

    海陆空

    2、Java中的 “高内聚,低耦合”

      耦合放到我们Java里面就是两个类之间的联系的紧密程度,看下面这段代码:
      

    public class A {
        public void say() {
            System.out.println("I am A");
        }
    }
    public class B {
        public void put(A a) {
            a.say();
        }
    }

      从上面这个例子中我们可以看出来,A类 和 B类 之间存在一种很强的一个联系,我们把这种联系称为强耦合关系,B类的 put方法 参数必须是 A类类型,不可以是 非A类类型。
      
      当然了,既然有强耦合关系当然也存在所谓的弱耦合关系,弱耦合也就是我们俗说的低耦合。那么请看下面这段代码:

    public interface IBase {
        void say();
    }
    public class A implements IBase {
        @Override
        public void say() {
            System.out.println("I am A");
        }
    }
    public class B implements IBase {
        @Override
        public void say() {
            System.out.println("I am B");
        }
    }
    public class C {
        public void put(IBase base) {
            base.say();
        }
    }

      上面这段代码中 C类 与 A类、B类之间就存在一种弱耦合关系,C类 的 put方法 的参数可以是 A类类型 也可以是 B类类型,不像强耦合关系中必须是 A类类型 其他类型皆不可的情形。

      我们实现低耦合就是对两类之间进行解耦,解除类之间的直接关系,将直接关系转换成间接关系,和上面代码一样,这种思想利用了多态的思想,我们一般情况都是使用接口的方式来实现解耦的。

      “高内聚,低耦合”,用一句话概括就是写的代码尽可能专一的完成一个任务,且各段代码尽量模块化互相独立。


    展开全文
  • 程序解耦的必要性

    千次阅读 2018-12-13 17:08:24
    架构设计中,大家都不喜欢耦合,但有哪些典型的耦合是我们系统架构设计中经常出现的,又该如何优化?这里列举了6个点:IP、jar包、数据库、服务、消息、扩容。这些点,如果设计不慎,都会导致系统一些耦合,这些点...
  • 解耦的方式

    千次阅读 2018-11-15 00:10:26
    解耦的理解 什么是耦合 耦合,指的是两个可以协作的部件的关系。A和B可以协作,则A和B的关系是耦合。 ​ 为什么要解耦 如果A可以和O,P,Q,S…(简称集合F)协作,则A就和集合F发生了耦合,如果A发生了变化...
  • 解耦

    2020-05-20 21:52:30
    注意:创建文件要赋予权限:如何给文件赋权 UserDao 接口 package cn.javabs.dao; /** * 用户的持久层接口设计 */ public interface UserDao { ... * 按照正规逻辑说, 以下方法是错误的 因为没有参数 ......
  • 数据解耦

    千次阅读 2018-09-16 11:52:41
    随着业务越来越复杂,数据量越来越大,并发量越来越大,数据库的性能越来越低。好不容易找运维申请了两台机器,让DBA部署了几个实例,想把一些业务库拆分出来,却发现拆不出来,扩不了容,尴尬!...
  • 什么是解耦?

    千次阅读 2018-08-10 08:44:52
    什么是解耦? 解耦就是用数学方法将两种运动分离开来处理问题。 对项目划分为多个模块这种做法你有什么看法?优势、劣势有哪些? 多模块化项目优势在于:提高代码的重用率,可维护性高,架构灵活,焦点分离。 ...
  • 解耦

    2018-12-02 11:09:10
    import os def file_handle(file_name, backend_data, res = None, type = 'fetch'): backend_data = 'backend ' + backend_data + '\n' # 读取的文本有换行符,需要做下拼接 if (type == 'fetch'): ...
  • 数据库解耦

    2017-11-29 08:46:34
    个性业务数据访问垂直拆分,共性数据访问服务化下沉,只是一个很小的优化点,但对于数据库解耦却是非常的有效。
  • 关于解耦的理解

    千次阅读 2016-01-26 17:54:38
    在程序设计过程中,最头痛的不是逻辑的编写过程,更不是算法的设计,最头痛的是如何设计出一个容易维护,扩展性好的东西。而耦合问题是最令人烦躁的,它的存在很多人发现不了,所以往往无从入手,真是有苦自己知了,...
  • 动态解耦 静态解耦

    2011-09-08 14:15:07
    1.静态解耦:  先解释下我理解的静态耦合,指的是编译期依赖关系已经确定,在运行时环境中,代码间的依赖关系不能改变。例如,我们在开发中经常会说的“把代码写死了”。静态是相对动态的、运行时的、可配置的和...
  • 永磁同步电机dq坐标系下的数学模型存在dq轴间的耦合,本文记录了学习在传统PI调节器控制下使用反馈解耦及复矢量解耦的个人理解。
  • 昨天发一个版本,很是冤枉;我们软件代码写的IP地址和公司生产...这样就可以和生产系统解耦,就是后面他们修改也能自动适配不用发布版本代价这么大。 答:这个IP是和生产约定好的,不会修改,他们如果修改会通知我...
  • java解耦

    2019-10-18 16:19:27
    耦合:在开发过程当中,一个模块严重...本案例解耦方法:接口+工厂类 1:创建接口 public interface demo { public void outstring(String s); } 2:接口的实现类 实现类1 public class demoimp implements de...
  • 1. IoC理论的背景 我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑。 图1:软件系统中耦合的对象 如果我们打开机械式手表...
  • 解耦,未解耦的区别 软件开发的常见疾病是“此处未发明”综合症,即倾向于编写新的实现而不是利用现有的解决方案。 然后,我们只是将其编写为当前正在构建的应用程序的一部分,认为这是一件小事。 随着时间的流逝,...
  • 软件解耦

    2016-06-21 07:34:38
    说起软件的解耦必然需要谈论耦合度,降低耦合度即可以理解为解耦,模块间有依赖关系必然存在耦合,理论上的绝对零耦合是做不到的,但可以通过一些现有的方法将耦合度降 至最低。做事情要想事半功倍,就要高处着眼,...
  • 架构解耦

    千次阅读 2015-08-29 17:09:33
    但系统架构之间的解耦恐怕一般人很少接触,换种说法就是一般人很少有架构解耦的概念和思想; 一方面是因为很少有书文章讲怎样做架构,恐怕也很难做架构,另外一方面一个项目中真正做全局架构的 人一般只有一个
  • 解耦控制

    千次阅读 2011-06-27 23:14:00
    所谓解耦控制系统,就是采用某种结构,寻找合适的控制规律来消除系统种各控制回路之间的相互耦合关系,使每一个输入只控制相应的一个输出,每一个输出又只受到一个控制的作用。 解耦控制是一个既古老又极富生命力的...
  • redis缓存解耦详解

    千次阅读 2020-05-12 11:50:07
    redis是现在最主流的缓存利器,但是你的项目中,缓存真正做到了解耦了吗? 背景 最近,项目中遇到一个redis缓存使用的问题,当redis连接不上时,直接导致业务异常。redis不是做为缓存使用吗?当缓存中查询不到,...
  • 微服务架构如何进行解耦

    千次阅读 2018-12-24 16:58:31
    导言: 耦合性,是对模块间关联程度的度量。耦合的强弱取决于模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。...
  • 聊聊AppDelegate解耦

    万次阅读 2018-08-12 18:52:46
    AppDelegate 在iOS开发中,AppDelegate指的是UIApplicationDelegate,用来处理App层面的事件,包括生命周期变化,OpenURL,处理HandOff和Intent等。 每个iOS都有一个入口函数main,其中的一个参数就是AppDelegate...
  • 解耦设计

    2018-03-15 00:00:00
    设计未来一个很重要的考量要素就是“解耦”设计。直观理解“解耦”,就是我可以替换某个模块,对原来系统的功能不造成影响。比如Windows 95, 98, 2000, 7, 8, 10都可以直接运行在兼容PC上。反过来,奔腾,奔腾II,...
  • 神经网络解耦程序,了来了来了了来了来了了
  • 分层与解耦

    千次阅读 2013-09-04 00:23:15
    1. 为什么要进行分层 分层的目的是使软件具有结构性,便于开发、维护和管理。这正是软件开发希望达到的目的。将不同的功能模块独立开来,在改动一个层模块的时候,另一个层能不改变任何内容即可正常使用,这样可以...
  • 解耦的概念、spring实现解耦的概述

    千次阅读 2017-01-22 09:14:27
    我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑。 图1:软件系统中耦合的对象 如果我们打开机械式手表的后盖,就会看到与...
  • 解耦与半解耦 解耦与半解耦的原理 软件流程 想要了解解耦与半解耦,需要先知道一个应用启动的流程是什么。 USER通过shell(bash/zsh)发送指令给OS, OS发送通知lib库准备好运行环境, lib库准备好通知soft可以运行...
  • 模块化与解耦

    2016-04-13 10:47:08
    简述 本文主要讲述了在iOS开发过程中,模块化工程架构的一种组织方式,本文主要讲述基于cocoapods来做模块化的方案,详细...解耦与通信 1.为什么要做模块化? 我们都知道最基本的代码设计原则:“Don’t repeat yo...

空空如也

1 2 3 4 5 ... 20
收藏数 195,599
精华内容 78,239
关键字:

解耦