zoukankan      html  css  js  c++  java
  • Spring 耦合与内聚

    什么是耦合

      在软件工程中,耦合指的就是就是程序之间的依赖性。

      包括:类之间的依赖,方法之间的依赖。

    什么是内聚

      内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。

      内聚和耦合是密切相关的,同其他模块存在高耦合的模块意味着低内聚,而高内聚的模块意味着该模块同其他模块之间是低耦合。在进行软件设计时,应力争做到高内聚,低耦合。

    解耦

      降低程序之间的依赖关系。

      我们要知道依赖关系是不可能完全消除的,那么我们该降低哪些依赖关系呢?

      实际开发中应该做到:编译期不依赖,运行时才依赖

    解耦的思路

      第一步——使用反射来创建对象,从而避免使用new关键字

      第二步——通过读取配置文件来获取要创建对象的全限定类名

    实例

      这是jdbc的获取连接的两个步骤,我们可以看到注册驱动这里,对com.mysql.jdbc.Driver()类有依赖

      这样的代码同样也能注册驱动,但并不会产生依赖,在这里com.mysql.jdbc.Driver只是一个字符串。

      我们先来看第一种,第一种方法就是实例化Driver类,并通过调用registerDriver()方法完成注册。

      可以看到它是把要注册的驱动程序信息封装到了DriverInfo中,然后放进了一个List中。

       第二种方法是怎么通过只要获得Driver的Class对象就可以完成注册呢,我们来看下Driver的源码

       可以看到它是通过静态代码块实现的,根据类加载机制当执行 Class.forName(driverClass) 获取其Class对象时, com.mysql.jdbc.Driver 就会被JVM加载,连接,并进行初始化,初始化就会执行静态代码块,也就会执行下边这句代码:

       使用第二种方式的好处就是,我们的类不在依赖具体的类,此时就算删除mysql驱动的jar包,依然可以编译(不能运行),同时也产生了另一个问题mysql 驱动的全限定类名字符串是在 java 类中写死的,一旦要改还是要修改源码。

     

  • 相关阅读:
    idea打包jar部署Linux出现乱码
    HTML元素刷新方式
    Linux中Jar启动与停止
    Win10开机自启软件设置
    java后台数据传输到前端少一天,8小时
    mysql字符串提取数组排序
    maven 配置文件
    mac docker安装jupyter notebook镜像
    pycharm使用git
    github使用命令
  • 原文地址:https://www.cnblogs.com/qq2210446939/p/13672488.html
Copyright © 2011-2022 走看看