1、松耦合(IOC 控制反转,依赖注入 ),紧耦合

      紧耦合:组件之间直接依赖,当其中一个组件发生变化时,直接影响其他组件,或者其他组件不能访问 为紧耦合;不利于系统的维护;

      松耦合:对象之间通过配置文件进行反转,注入。如对象A和对象B 通过配置文件config.xml进行依赖,当对象A需要依赖一个新对象C的时候,我们只需要更改配置文件让对象A和对象C进行依赖即可,对象之间的调用关系由配置文件决定,而不是由程序决定。降低组件之间的依赖,达到松耦合的目的以利于系统的维护;

比如打印机配置文件,根据用户选择不同的打印机驱动来打印文件,而不是让文件直接绑定到一个打印机上。也是一个松耦合,依赖注入的体现;


2、AOP:面向切面编程。将相同的2块业务逻辑 

逻辑块1 : 前置部分1----主体部分1----后置部分1

逻辑块2:  前置部分2----主体部分2----后置部分2

        如果逻辑1的前置部分和逻辑2的前置部分都是用来记录日志,后置部分都是用了执行跳转。我们可以使用AOP--面向切面的思想,将逻辑1块和逻辑2块的  前置部分和后置部分单独分离开。  分离开的前置和后置部分,将通过 aspect 配置文件进行管理,当执行 主体部分1或主体部分2时,就先执行配置文件 --》配置文件将根据主体部分的不同执行不同的前置部分,主体部分执行完毕后,配置文件将根据执行的主体不同,执行相对应的后置部分。将变成如下结构


  主体部分1执行-----之前-----经过配置文件----》执行前置部分1的逻辑;

  主体部分1执行完毕----经过配置文件----》执行后置部分1的逻辑;

  主体部分2执行-----之前-----经过配置文件----》执行前置部分2的逻辑;

  主体部分2执行完毕----经过配置文件----》执行后置部分2的逻辑。  让开发者只关注 主体部分的逻辑实现;而不用考虑 前置和后置部分;