IoC & AOP笔记

本文为初学者自记笔记,摘抄自这里
本文为初学者自记笔记,摘抄自这里

IoC和AOP

什么是IoC

IoC(Inversion of control)控制反转/反转控制。是一种思想而不是一个技术实现。描述的是:Java开发领域对象的创建以及管理问题。
传统的Java开发模式中,当需要一个对象时,我们会自己使用new或者getInstance等直接或者间接调用构造方法创建一个对象。而在Spring开发模式中,Spring框架使用了工厂模式为我们创建了所需要的对象,不需要我们自己创建了,直接调用Spring提供的对象就可以了,这是控制反转的思想。
从这两种开发模式对比看:我们丧失了创建、管理对象的权力,从而也得到了一个好处,即不用考虑对象的创建、管理等一系列的事情。

使用IoC解决的问题

IoC的思想就是两方之间不互相依赖,由第三方容器来管理相关资源,这样的好处:对象之间的耦合度或者说依赖程度降低;资源变得容易管理,用Spring容器提供的话很容易就可以实现一个单例。

IoC和DI

IoC和DI描述的是同一件事情(对象实例化以及依赖关系的维护),只不过角度不同。
IoC是站在对象的角度,对象实例化以及管理的权限反转交给了容器。
DI(Dependency Injection)依赖注入。是IoC最常见以及最合理的实现方式。是站在容器的角度,容器会把对象依赖的其他对象注入。例如:对象A实例化过程中因为声明了一个B类型的属性,那么就需要容器把B对象注入到A中。

什么是AOP

AOP(Aspect oriented programming)面向切面编程,AOP是OOP(面向对象编程)的一种延续。在OOP思想中,我们将事物纵向抽成一个个的对象。而在面向切面编程中,我们将一个个的对象某些类似的方面横向抽成一个切面,对这个切面进行一些如权限控制、事物管理、记录日志等共用操作处理的过程就是面向切面编程的思想。AOP底层是动态代理。

使用AOP解决的问题

OOP思想可以解决大部分代码重复问题,但是由于这种垂直纵向的继承体系,在多个纵向流程中出现的相同子流程代码,我们称之为横切逻辑代码
AOP就是用来解决横切逻辑代码的问题:代码重复问题;横切逻辑代码和业务代码混在在一起,代码臃肿,不便维护。
因此AOP提出横向抽取机制,将横切逻辑代码和业务逻辑代码分离,在不改变原有业务逻辑的情况下,增强横切逻辑代码,根本上解耦合,避免横切逻辑代码重复。

你可能感兴趣的:(IoC & AOP笔记)