浅析AOP实现原理(1)静态代理

什么是AOP

AOP是OOP的扩展,在OOP中,有许多与核心业务无关的代码如日志代码分布在项目的各个层次中,产生大量的重复代码,并且不利于模块的重用,因此,AOP提供了一种称为切面的技术,剖开对象的内部,将那些影响了多个类的共同行为封装成一个可重用的模块,称为Aspect,也就是切面。这样做的好处就是减少了重复的代码,降低模块之间的耦合。

在AOP中,最重要的就是AOP代理类的实现,使用了代理模式(不明白代理模式的点这里,分为静态代理动态代理
静态代理是用AOP框架提供的命令进行编译,从而在编译阶段就可生成AOP代理类;
动态代理则是在运行时借助JDK动态代理,CGLIB等在内存中临时生成AOP动态代理类。

静态代理

假设我们要在杀人之前发出警告,刺杀成功后立刻向组织汇报,用代理模式实现这个过程,然后在代理类中调用杀手的方法前后实现相应的过程

1、定义一个Killer接口,包含刺杀方法

public interface Killer {
    void kill();
}

2、定义杀手实现Killer接口

public class KillerImpl implements Killer{
    @Override
    public void kill() {
        // TODO Auto-generated method stub
        System.out.println("正在杀人,请勿打扰");
    }
}

3、定义杀手的代理类,在杀人前和杀人后都发出信息

public class Proxy implements Killer{
    private Killer killer;
    public Proxy(Killer killer) {
        // TODO Auto-generated constructor stub
        this.killer = killer;
    }
    @Override
    public void kill() {
        // TODO Auto-generated method stub
        System.out.println("我准备杀人啦");
        killer.kill();
        System.out.println("完成任务,今晚吃鸡");
    }
}

4、测试

public class Test {
    public static void main(String[] args) {
        KillerImpl killerImpl = new KillerImpl();
        Proxy proxy = new Proxy(killerImpl);
        proxy.kill();
    }
}

5、输出结果:

《浅析AOP实现原理(1)静态代理》

    原文作者:AOP
    原文地址: https://blog.csdn.net/qq_35787905/article/details/78235757
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞