【1】首先我们来了解下,什么叫做耦合

耦合:指的是程序之间的依赖关系{包括类之间的依赖和方法间的依赖}

例如,我们常用的new 就是一种耦合,以及一个类调用另一个类中的方法,也是耦合

【2】解耦

解耦:就是降低程序之间的耦合关系,但是并不能消除

在实际的开发中:我们应该做到编译器不依赖,运行期依赖

【3】解决思路

1.使用反射来创建对象,避免使用new关键字

2.通过读取配置文件来获取要创建的对象的全限定类名

我们先创建出一个bean.properties配置文件,以后在Spring中是要用到xml的,这里是测试,所以用properties。

在这里面写上,两个实现类的全限定类名。

因为我们需要进行在类中调用实体类,把new关键字消除的操作。

就需要实例化对象

在工厂类中,我们需要先读取我们的bean.properties文件,然后用load方法读取加载

之后就是实例化我们的实现类对象的代码

这里最重要的一点就是Class.forName的用法,这个方法是返回一个类,然后再                              Class.newInstance创建对象,来代替创建对象时的new关键字。

注意:forName中的字符串,必须包含我们所需要创建类的包名和类名

也就是我们bean.properties中写的

这样我们就得到了我们需要的实体类对象

我们返回到我们的service实体类中

同理,我们最后的前端模拟类也可以这么使用

注意:因为我们在工厂中getBean方法中返回的是Object类型,这个都需要强转

这里大家需要知道,这个靠newInstance出来的对象,每次打印的地址值都不同,所以是多例的,如果我们想得到单例的对象,怎么办?

既然我们调用BeanFactory的方法时,每次都是新的对象,那么我们就可以在工厂中,把对象存入到一个容器中,然后每次调用,就从容器中拿就可以了。

这样我们在自定义方法中,就可以,return beans.get(name);即可

Java中解耦测试分析相关推荐

  1. 深入理解Java中的逃逸分析

    转载自  深入理解Java中的逃逸分析 在Java的编译体系中,一个Java的源代码文件变成计算机可执行的机器指令的过程中,需要经过两段编译,第一段是把.java文件转换成.class文件.第二段编译 ...

  2. Java - 深入理解Java中的逃逸分析

    在Java的编译体系中,一个Java的源代码文件变成计算机可执行的机器指令的过程中,需要经过两段编译,第一段是把.java文件转换成.class文件.第二段编译是把.class转换成机器指令的过程. ...

  3. Java中的内存分析

    分析内存是深入了解编程的第一步,以下来演示一下编程中常见的内存分析,文章脉络: 数据类型 数据类型不同,内存分配位置和大小也不同,用一张图表示Java中的数据类型.除了基本数据类型,其它全部是引用类型 ...

  4. JAVA中的编码分析

    在实际编程中可以不用关注JVM中使用的是什么编码,而只需要关注自己输出需要采用的编码,JVM会根据你设置的编码正确操作. 1.String采用的是什么编码? 很多厂家根据规范实现了JVM,JVM只说明 ...

  5. java中ssh测试接口方法_SSH入门---框架搭建(eclipse环境下)

    前情提要:本文是把Spring.Struts2.Hibernate三大框架整合到一起,搭建整合框架的教程,如需查看各个框架的单独搭建,请看我个人的相关文章. 一.新建动态web项目,导包: 我的项目名 ...

  6. Java 中 ConcurrentHashMap 原理分析

    一.Java并发基础 当一个对象或变量可以被多个线程共享的时候,就有可能使得程序的逻辑出现问题. 在一个对象中有一个变量i=0,有两个线程A,B都想对i加1,这个时候便有问题显现出来,关键就是对i加1 ...

  7. java中assertEquals_Junit 测试: assertEquals的使用

    我写了如下的一个类:importjava.math.BigDecimal;publicclassDecimalClass{publicBigDecimaladdFloat(floatf1,floatf ...

  8. tlab java_Java中的逃逸分析和TLAB以及Java对象分配

    我们在学习使用Java的过程中,一般认为new出来的对象都是被分配在堆上,但是这个结论不是那么的绝对,通过对Java对象分配的过程分析,可以知道有两个地方会导致Java中new出来的对象并一定分别在所 ...

  9. Java中对象都是分配在堆上吗?你错了!

    我们在学习使用Java的过程中,一般认为new出来的对象都是被分配在堆上,但是这个结论不是那么的绝对,通过对Java对象分配的过程分析,可以知道有两个地方会导致Java中new出来的对象并不一定分别在 ...

最新文章

  1. 大数据标准化白皮书正式发布
  2. SQL Server开发人员应聘常见问题妙解
  3. 服务器双系统设置默认,服务器双系统怎么选择
  4. Java内存模型FAQ(四)重排序意味着什么?
  5. Jquery 日期组件
  6. qtcreator下拉列表怎么制作_设置EXCEL动态下拉菜单,只需要一个组合键,新手也能快速掌握...
  7. 数据结构HashMap(Android SparseArray 和ArrayMap)
  8. IDEA设置注释配置时获取不到参数的解决办法
  9. 万字长文!Go 后台项目架构思考与重构
  10. Java打卡Day4-算术运算符
  11. 基于Docker的Mysql主从复制
  12. 使用javap分析Java的字符串操作 1
  13. VS201x提示无法查找或打开 PDB 文件
  14. 机器学习 - 训练集、验证集、测试集
  15. Word文档的使用技巧
  16. win10 2016 长期服务版激活
  17. Git 笔记 - git rebase
  18. 倒排索引(Inverted index)
  19. github出现HTTP request failed
  20. 3D立方体图片切换动画

热门文章

  1. Golang基础知识点整理
  2. python 自学 记录
  3. html二级菜单显示与隐藏,二级菜单显示与隐藏效果
  4. echarts图 示例
  5. err_code啥意思?
  6. 文件管理和用户管理命令以及bash基础特性
  7. Java 浮点数保留N有效数字
  8. learnOpenGL-基础光照
  9. Unity使用Mesh Collider报错
  10. 【VUE前进之路】插槽的使用