什么叫耦合?

耦合是指两个实体相互依赖对方的一个程度。比如在计算机硬件里,要设计一个系统,这个系统有一块主板,假如这个主板依赖于某种图形显示卡,则就意味着我们实现必须实现开发好这块图形显示卡,如果没有图形显示卡,则主板没法设计。更严重的是图形显示卡又依赖于某种芯片,则必须先有芯片,才能开发出图形显示卡,接着才能开发出这种主板。三者之间的开发工作是串行的。这种依赖显然是需要避免的。因此我们必须将系统的耦合程度降低。

如何降低呢?可以考虑在不同硬件之间通过接口来进行衔接,定义好接口之后,任意的图形显示卡只要符合这个接口规范就可以接入到主板中,芯片、主板和接口的开发就可以同时进行了。
此外, 耦合度过高有什么后果呢?
(1)开发效率低下,因为成员之间的开发工作不能同时进行。
(2)如果一个系统原有的设计过于耦合凌乱,使得对任何一处的更改都变得非常困难。就像一堆粘合在一起的物品,单独剥离某一部分是不可能的,程序员必须对全盘进行考虑,因此复杂度大大加强,难于理解,难于维护。因此程序员只好在上面打丑陋的补丁。其实任何一个程序员都想做出一流的东西来,对打补丁这件事厌恶透顶,如果时间允许,我们宁可从头开发一个优美的东西。
例题1:java中可能存在耦合的代码
package com.finalnull;
class A {
public void f(){}
}
class B {
public void test(){
A a = new A();
a.f();
}
}
例题2:降低例题1的这种耦合关系
package com.finalnull;
interface I {
public void f();
}
class A implements I {
public void f(){}
}
class B {
public void test(I imps){
//也可以将接口的引用imps由方法的局部变量变更为成员变量
imps.f();
}
}

降低对象之间的耦合关系相关推荐

  1. Java面试题 20在面向对象编程里,经常使用is-a来说明对象之间的继承关系

    Java面试题 20在面向对象编程里,经常使用is-a来说明对象之间的继承关系,下列对象中不具备继承关系的是?() A:手机与小米手机 B:企业家与雷军 C:编程语言与Java D:中国与北京 类之间 ...

  2. B端产品怎样降低模块之间的耦合?

    设计复杂功能模块时,模块之间的逻辑联系很强,数据依赖性也较高,怎样在一开始通过梳理和分析,达到简单优雅的设计呢? B端产品怎样降低模块之间的耦合? 这是一个从混沌走向清晰的渐进明细过程,可以从以下几方 ...

  3. 微服务下数据表之间的耦合关系

    微服务下数据表之间的耦合关系 1.问题产生 今天同事给我发了一个链接,问我这种做可视化建表的过程觉得怎么样?(如下图) 同事的意思主要是,在微服务架构下,新建单一数据表,然后表内数据需要引用其他数据表 ...

  4. 设计模式前言:UML图画法以及对象之间的六大关系

    最近开始学习设计模式,要想快速理解并掌握设计模式画UML图不失为一种行之有效的方法.以下是我所记的笔记.我画UML图所用的软件是一个在线软件点击打开链接.当然他也有离线版本,搜搜就能下到 <fo ...

  5. 是什么事类,什么是对象,类和对象之间有什么关系?

    什么是类 类的概念:类是具有相同属性和服务的一组对象的集合.它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分.在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类 ...

  6. 控制层远程调用业务层_如何应用数据访问服务层分离系统中的业务层和持久层之间耦合关系...

    软件项目实训及课程设计指导--如何应用数据访问服务层分离业务层和持久层之间耦合关系 作者已经在本系列文章<软件项目实训及课程设计指导--如何正确地设计J2EE应用系统持久层中的各个组件结构及关系 ...

  7. 协调多个对象之间的交互——中介者模式

    本文转载自 :http://blog.csdn.net/lovelion/article/details/8482952 腾讯公司推出的QQ作为一款免费的即时聊天软件深受广大用户的喜爱,它已经成为很多 ...

  8. diagram怎么记忆_UML20以上14图的解释、分类记忆方法及类之间6种关系

    UML2.0 分类 以下是教材书上的顺序: (1)类图(Class Diagram). 类图描述一组类. 接口.协作和它们之间的关系.在00系统的建模中,最常见的图就是类图.类图给出了系统的静态设计视 ...

  9. 【面向对象】面向对象程序设计测试题9-对象之间的继承关系测试题

    Test9:对象之间的继承关系测试题 问题 1 What will happen if you attempt to compile and run the following code? class ...

最新文章

  1. jQuery的选择器(一)
  2. Windows Media Player 损坏提示“出现了内部应用程序错误解决方法
  3. 用DTS将 SQLServer 导出到 Oracle
  4. Linux下修改swap的大小
  5. 发达国家餐厅的一张罚单 让我们中国人汗颜
  6. 中国酒柜行业市场供需与战略研究报告
  7. ansys_apdl使用教程
  8. filesplit的Python项目详细描述
  9. ai语音系统智能AI机器人AI源码营销机器人电销机器人智能电话机器人拨号机器人语音机器人空号识别科大识别阿里识别语音识别语音翻译FreeSWITCH呼叫中心中间ipbxIPBX
  10. 制作谷歌浏览器 Google Chrome 免安装绿色版!
  11. 【微信小程序云开发 云数据库 云函数 云存储】
  12. ubuntu安装视频播放器
  13. 利用nslookup命令查看MX记录、A记录、CNAME记录和NS记录
  14. 【考研经验】一个苍山的不入流的学生的考研之路
  15. 邂逅“命运之师”人生巨变
  16. 服务器安装CapMonster软件自动打码
  17. 关于VIPS算法的实现
  18. 趣味C语言小游戏(四)之连连看
  19. 9.1 什么是包图?
  20. CCF推荐人工智能A类B类期刊与会议汇总!!!发论文必备

热门文章

  1. linux中剪切文件命令,Linux文件处理常用命令操作技巧
  2. Java web集成支付宝电脑支付接口(沙箱环境)
  3. 吴恩达机器学习笔记(九)——大规模机器学习
  4. CorelDRAW X7中相机滤镜呈现出的复古照片效果
  5. 华为员工论坛集体吐槽新办公环境:周围像荒野,交通乱糟糟!
  6. oracle视图如何创建索引,ORACLE 创建视图索引序列
  7. 在传统公司干IT是一种什么体验(四)
  8. 用两个手指夹住耳朵揉15下,奇迹发生了!
  9. Vmware虚拟机网络模式原理及配置详解
  10. 北美电影票房Top10-2020年2月7日:《猛禽小队》一点也不猛