首页 > 编程语言 > 详细

Spring AOP前置知识 学习静态代理模式

时间:2021-03-29 12:09:47      阅读:18      评论:0      收藏:0      [点我收藏+]

前置知识:代理模式 它就是Spring AOP的底层实现

静态代理

角色分析

抽象角色:一般会使用接口或者抽象类来解决
真实角色:被代理的角色
代理角色:代理真实角色 代理真实角色后,一般会做附属的操作。
客户:访问代理对象的人
技术分享图片
假设有上图关系,房东只是想做租房操作不想管其他的事情,于是就交给代理类来实现。 而客户想租房找的就是代理类
代码例子:
定义租房接口 房东和中介需要实现该接口

package Demo1;

public interface Rent {
    public void rent();
}

定义房东类

package Demo1;

public class Host implements Rent {
    public void rent() {
        System.out.println("房东租房!");
    }
}

定义代理类

package Demo1;

public class Proxy  implements Rent{
    private Host host;

    public Proxy() {
    }

    public Proxy(Host host) {
        this.host = host;
    }

    public void rent() {
        //在代理时 代理类可以做一些附属的操作
        do1();
        do2();
        do3();
        host.rent();
    }

    private void do1(){
        System.out.println("看房---");
    }
    private void do2(){
        System.out.println("签合同---");
    }
    private void do3(){
        System.out.println("收钱");
    }
}

功能实现了!

package Demo1;

public class Clinet {
    public static void main(String[] args) {
        Host host=new Host();
        Proxy proxy=new Proxy(host);
        proxy.rent();
    }
}

动态代理

上面的代码有一个致命的缺点,每一个被代理类的创建都要创建一个对应的代理类。 需要我们使用动态代理

需要了解两个类: proxy和invocationhandler

技术分享图片
技术分享图片

Spring AOP前置知识 学习静态代理模式

原文:https://www.cnblogs.com/OfflineBoy/p/14591497.html

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