java中的耦合_Java中的耦合
耦合是指另一个对象对一个对象的使用。也可以称为协作。一个对象与另一个对象之间的依赖关系可以完成一些任务,可以分为以下两种类型:紧密耦合-当对象创建要使用的对象时,则为紧密耦合情况。由于主要对象创建了对象本身,因此无法从外部将其更改为易于将其标记为紧密耦合的对象。
松散耦合-当对象从外部获取要使用的对象时,则为松散耦合情况。由于主要对象仅是使用对象,因此可以从外部轻松更改该对象,将其标记为松散耦合的对象。
示例-紧耦合
测试器
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中的耦合相关推荐
- java多态的概念_java中多态概念、实现原理详解
一.什么是多态? 1.多态的定义 指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用) 2.多态的作用 消除类型之间的耦合关系 3.多 ...
- java变量存储位置_java 中变量存储位置的区别
[原文] 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量 ...
- java可以多重继承吗_Java中的多重继承与组合vs继承
java可以多重继承吗 有时我写了几篇有关Java继承,接口和组成的文章. 在这篇文章中,我们将研究多重继承,然后了解组成优于继承的好处. Java中的多重继承 多重继承是创建具有多个超类的单个类的能 ...
- java中有没有栈_Java中堆和栈有什么区别
stack 和 heep 都是内存的一部分stack 空间小,速度比较快, 用来放对象的引用heep 大,一般所有创建的对象都放在这里.栈(stack):是一个先进后出的数据结构,通常用于保存方法(函 ...
- java 静态资源变量_Java中读取配置文件中的内容,并将其赋值给静态变量的方法...
项目开发中某个功能需要抽取成方法写成一个工具类,提供给别人使用.写过工具类的人都知道,工具类中的方法一般都是静态方法,可以直接使用类名点方法名调用, 使用很方便,比如判断某个对象是否为空的方式Obje ...
- java 删除list元素_JAVA中循环删除list中元素的方法总结
印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个误区.下面就来讲一讲..伸手党可直接跳至文末 ...
- java和equals区别_JAVA中==与equals的区别
equals如果没有被重写的话,和==的作用是一样的,都是判断两个对象引用是否指向同一个地址.一般重写了equals()方法就表示比较它们"实际意义上相等",比较的是内容,而不是引 ...
- java为什么要初始化_JAVA中到底要怎么样初始化
Java中的变量作用范围: 1. 类的属性,或者叫值域 2. 方法里的局部变量 3. 方法的参数 对于第一种变量,Java虚拟机会自动进行初始化.如果给出了初始值,则初始化为该初始值.如果没有给出,则 ...
- java中hashcode作用_Java中hashCode的作用
以下是关于HashCode的官方文档定义: hashcode方法返回该对象的哈希码值.支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表. hashCode ...
- java 基本类型 引用_java中 引用类型 和 基本类型 有何区别?
栈与堆都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. Java的堆是一个运行时数据区,类的(对象从中分配空间.这些对象通过new.newa ...
最新文章
- 论坛社区做推广要精心的策划
- MATLAB批量实现dicom转换为bmp格式
- 解决Tomcat v8.0 Server at localhost failed to start.
- 文巾解题 12. 整数转罗马数字
- HBase在阿里搜索中的应用实践
- 前后端分离和微服务_为什么说微服务,要从前后端分离开始?一文带你揭秘深入微服务...
- 从 Google 的一道面试题谈谈数学基础的重要性
- HDU - 4348To the moon——主席树+区间修改
- 外刊评终极平板电脑十大功能:防眩目屏幕在列
- CreateJS基础 学习笔记(上)
- 【01】如何在XMind中排列自由主题
- 今天 Java 14 正式发布了!放弃 Java 8 行吗?
- 锁定Excel部分单元格不能编辑,可以这样操作
- 谷歌搜索表单参数url参数详解
- 【LaTeX试卷】天津大学仁爱学院高等数学试卷 LaTeX模板
- nginx平台初探(100%)
- Js 获取当前时间上一个月 YYYY-mm
- 一万五千字详解HTTP协议
- 新课上线 | 每次 5 分钟,轻松玩转阿里云容器服务!
- 7-6 统计字母出现的次数 (20 分)
热门文章
- 安全架构--8--我设计的企业安全体系架构
- S32K144之SDK版:FTM定时器(测试打印系统信息)
- 《c 语言程序设计》宝钏,【黄钟】醉花阴_宝钏松金髻
- java怎么取map中的key值,Java获取map中key和value的方法
- Hive常用函数大全(一)(关系/数学/逻辑/数值/日期/条件/字符串/集合统计/复杂类型)
- OJ每日一练——输出元音字母
- 投射电子显微镜(TEM)
- 获取某年某月的第一天是星期几
- 英语知识系列:单词中元音字母发音规律
- 《壁纸 - 大全精选手机壁纸》EULA条款协议