耦合是指另一个对象对一个对象的使用。也可以称为协作。一个对象与另一个对象之间的依赖关系可以完成一些任务,可以分为以下两种类型:紧密耦合-当对象创建要使用的对象时,则为紧密耦合情况。由于主要对象创建了对象本身,因此无法从外部将其更改为易于将其标记为紧密耦合的对象。

松散耦合-当对象从外部获取要使用的对象时,则为松散耦合情况。由于主要对象仅是使用对象,因此可以从外部轻松更改该对象,将其标记为松散耦合的对象。

示例-紧耦合

测试器

public class Tester {

public static void main(String args[]) {

A a = new A();

//a.display()将打印A和B-

//此实现不能动态更改

//紧密耦合

a.display();

}

}

class A {

B b;

public A() {

//b与A紧密耦合

b = new B();

}

public void display() {

System.out.println("A");

b.display();

}

}

class B {

public B(){}

public void display() {

System.out.println("B");

}

}

这将产生以下结果-

输出结果A

B

示例-松耦合

测试器import java.io.IOException;

public class Tester {

public static void main(String args[]) throws IOException {

Show b = new B();

Show c = new C();

A a = new A(b);

//a.display()将打印A和B-

a.display();

A a1 = new A(c);

//a.display()将打印A和C-

a1.display();

}

}

interface Show {

public void display();

}

class A {

Show s;

public A(Show s) {

//s与A松散耦合

this.s = s;

}

public void display() {

System.out.println("A");

s.display();

}

}

class B implements Show {

public B(){}

public void display() {

System.out.println("B");

}

}

class C implements Show {

public C(){}

public void display() {

System.out.println("C");

}

}

这将产生以下结果-

输出结果A

B

A

C

使用接口,我们通过注入依赖关系来实现松散耦合。

java中的耦合_Java中的耦合相关推荐

  1. java多态的概念_java中多态概念、实现原理详解

    一.什么是多态? 1.多态的定义 指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用) 2.多态的作用 消除类型之间的耦合关系 3.多 ...

  2. java变量存储位置_java 中变量存储位置的区别

    [原文] 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量 ...

  3. java可以多重继承吗_Java中的多重继承与组合vs继承

    java可以多重继承吗 有时我写了几篇有关Java继承,接口和组成的文章. 在这篇文章中,我们将研究多重继承,然后了解组成优于继承的好处. Java中的多重继承 多重继承是创建具有多个超类的单个类的能 ...

  4. java中有没有栈_Java中堆和栈有什么区别

    stack 和 heep 都是内存的一部分stack 空间小,速度比较快, 用来放对象的引用heep 大,一般所有创建的对象都放在这里.栈(stack):是一个先进后出的数据结构,通常用于保存方法(函 ...

  5. java 静态资源变量_Java中读取配置文件中的内容,并将其赋值给静态变量的方法...

    项目开发中某个功能需要抽取成方法写成一个工具类,提供给别人使用.写过工具类的人都知道,工具类中的方法一般都是静态方法,可以直接使用类名点方法名调用, 使用很方便,比如判断某个对象是否为空的方式Obje ...

  6. java 删除list元素_JAVA中循环删除list中元素的方法总结

    印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个误区.下面就来讲一讲..伸手党可直接跳至文末 ...

  7. java和equals区别_JAVA中==与equals的区别

    equals如果没有被重写的话,和==的作用是一样的,都是判断两个对象引用是否指向同一个地址.一般重写了equals()方法就表示比较它们"实际意义上相等",比较的是内容,而不是引 ...

  8. java为什么要初始化_JAVA中到底要怎么样初始化

    Java中的变量作用范围: 1. 类的属性,或者叫值域 2. 方法里的局部变量 3. 方法的参数 对于第一种变量,Java虚拟机会自动进行初始化.如果给出了初始值,则初始化为该初始值.如果没有给出,则 ...

  9. java中hashcode作用_Java中hashCode的作用

    以下是关于HashCode的官方文档定义: hashcode方法返回该对象的哈希码值.支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表. hashCode  ...

  10. java 基本类型 引用_java中 引用类型 和 基本类型 有何区别?

    栈与堆都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. Java的堆是一个运行时数据区,类的(对象从中分配空间.这些对象通过new.newa ...

最新文章

  1. 论坛社区做推广要精心的策划
  2. MATLAB批量实现dicom转换为bmp格式
  3. 解决Tomcat v8.0 Server at localhost failed to start.
  4. 文巾解题 12. 整数转罗马数字
  5. HBase在阿里搜索中的应用实践
  6. 前后端分离和微服务_为什么说微服务,要从前后端分离开始?一文带你揭秘深入微服务...
  7. 从 Google 的一道面试题谈谈数学基础的重要性
  8. HDU - 4348To the moon——主席树+区间修改
  9. 外刊评终极平板电脑十大功能:防眩目屏幕在列
  10. CreateJS基础 学习笔记(上)
  11. 【01】如何在XMind中排列自由主题
  12. 今天 Java 14 正式发布了!放弃 Java 8 行吗?
  13. 锁定Excel部分单元格不能编辑,可以这样操作
  14. 谷歌搜索表单参数url参数详解
  15. 【LaTeX试卷】天津大学仁爱学院高等数学试卷 LaTeX模板
  16. nginx平台初探(100%)
  17. Js 获取当前时间上一个月 YYYY-mm
  18. 一万五千字详解HTTP协议
  19. 新课上线 | 每次 5 分钟,轻松玩转阿里云容器服务!
  20. 7-6 统计字母出现的次数 (20 分)

热门文章

  1. 安全架构--8--我设计的企业安全体系架构
  2. S32K144之SDK版:FTM定时器(测试打印系统信息)
  3. 《c 语言程序设计》宝钏,【黄钟】醉花阴_宝钏松金髻
  4. java怎么取map中的key值,Java获取map中key和value的方法
  5. Hive常用函数大全(一)(关系/数学/逻辑/数值/日期/条件/字符串/集合统计/复杂类型)
  6. OJ每日一练——输出元音字母
  7. 投射电子显微镜(TEM)
  8. 获取某年某月的第一天是星期几
  9. 英语知识系列:单词中元音字母发音规律
  10. 《壁纸 - 大全精选手机壁纸》EULA条款协议