注意:IOC和AOP不是spring提出的,在spring以前就已经存在,只不过更偏向于理论化,spring在技术层次把这两个思想作了⾮常好的实现(Java)spring
IoC Inversion of Control (控制反转/反转控制):注意它是⼀个技术思想,不是⼀个技术实现编程
new
对象了,⽽是由IoC容器(Spring框架)去帮助咱们实例化对象而且管理它,咱们须要使⽤哪一个对象,去问IoC容器要便可咱们丧失了⼀个权利(建立、管理对象的权利),获得了⼀个福利(不⽤考虑对象的建立、管理等⼀系列 事情)
IoC解决对象之间的耦合问题框架
DI:DependancyInjection(依赖注⼊) 怎么理解?
IOC和DI描述的是同⼀件事情,只不过⻆度不⼀样罢了
oop
是⼀种垂直继承体系
OOP编程思想能够解决⼤多数的代码重复问题,可是有⼀些状况是处理不了的,⽐以下⾯的在顶级⽗类Animal中的多个⽅法中相同位置出现了重复代码,OOP就解决不了oop
横切逻辑代码存在什么问题:spa
AOP出场,AOP独辟蹊径提出横向抽取机制,将横切逻辑代码和业务逻辑代码分析code
代码拆分容易,那么如何在不改变原有业务逻辑的状况下,悄⽆声息的把横切逻辑代码应⽤到原有的业务逻辑中,达到和原来⼀样的效果,这个是⽐较难的
在不改变原有业务逻辑状况下,加强横切逻辑代码,根本上解耦合,避免横切逻辑代码重复对象
「切」:指的是横切逻辑,原有业务逻辑代码咱们不能动,只能操做横切逻辑代码,因此⾯向横切逻辑blog
「⾯」:横切逻辑代码每每要影响的是不少个⽅法,每⼀个⽅法都如同⼀个点,多个点构成⾯,有⼀个⾯的概念在⾥⾯继承