首页 > 其他 > 详细

面试被问了几百遍的IOC和AOP

时间:2020-10-25 17:44:18      阅读:28      评论:0      收藏:0      [点我收藏+]

面试也好,学习的技术知识也好,IOC和AOP都是很重要的东西,这篇文章分享一下我对这个技术知识点的了解。

什么是IOC?

  IOC控制反转/反转控制。它是一种思想不是一个技术实现。描述的是:Java开发领域对象的创建以及管理的问题。

  例如:现有类A依赖于类B

  使用IOC思想的开发方式:不通过new关键字来创建对象,而是通过IOC容器来帮助我们实例化对象。我们需要哪个对象,直接从IOC容器里面获取即可。

为什么叫控制反转

  控制:指的是对象创建(实例化、管理)的权力

  反转:控制权交给外部环境(Spring框架、IOC容器)

IOC解决了什么问题

IOC的思想就是两方之间不互相依赖,由第三方容器来管理相关资源。这样有什么好处呢?

  1.对象之间的耦合度或者说依赖程度降低;

  2.资源变的容易管理;比如你用Spring容器提供的话很容易就可以实现一个单例

什么是AOP

  AOP:面向切面编程,AOP是OOP(面向对象编程)的一种延续

OOP编程思想可以解决大部分的代码重复问题。但是有一些问题是处理不了的。比如在父类中的多个方法的相同位置出现了重复的代码,OOP就解决不了。

/**
 * 动物父类
 */
public class Animal {

    /** 身高 */
    private String height;

    /** 体重 */
    private double weight;

    public void eat() {
        // 性能监控代码
        long start = System.currentTimeMillis();

        // 业务逻辑代码
        System.out.println("I can eat...");

        // 性能监控代码
        System.out.println("执行时长:" + (System.currentTimeMillis() - start)/1000f + "s");
    }

    public void run() {
        // 性能监控代码
        long start = System.currentTimeMillis();

        // 业务逻辑代码
        System.out.println("I can run...");

        // 性能监控代码
        System.out.println("执行时长:" + (System.currentTimeMillis() - start)/1000f + "s");
    }
}

这部分重复的代码,一般统称为横切逻辑代码。

横切逻辑代码存在的问题

  代码重复问题

  横切逻辑代码和业务代码混杂在一起,代码臃肿,不变维护

AOP就是用来解决这些问题的

AOP另辟蹊径,提出横向抽取机制,将横切逻辑代码和业务逻辑代码分离

代码拆分比较容易,难的是如何在不改变原有业务逻辑的情况下,悄无声息的将横向逻辑代码应用到原有的业务逻辑中,达到和原来一样的效果

AOP解决了什么问题

  AOP主要用来解决:在不改变原有业务逻辑的情况下,增强横切逻辑代码,根本上解耦合,避免横切逻辑代码重复。

AOP为什么叫面向切面编程

  切:指的是横切逻辑,原有业务逻辑代码不动,只能操作横切逻辑代码,所以面向横切逻辑

  面:横切逻辑代码往往要影响的是很多个方法,每个方法如同一个点,多个点构成一个面。这里有一个面的概念

 

面试被问了几百遍的IOC和AOP

原文:https://www.cnblogs.com/alongg/p/13872914.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!