spring aop学习5:jdk静态代理

来源:互联网 发布:热传导计算软件 编辑:程序博客网 时间:2024/05/21 21:41

一:基于接口的静态代理
这里写图片描述
1.分层
User(使用者)——Proxy(代理对象)——Target(目标对象)

二.上代码
1.基于接口的代理
◆接口InterfaceObject.java

package com.tiglle.aop.interfaces.proxy;//基于接口代理的接口(目标对象和代理对象都要实现)public interface InterfaceObject {    //目标对象和代理对象都要实现的方法    public void common();    public void common2();}

◆目标对象TargetObject.java

package com.tiglle.aop.interfaces.proxy;//目标对象public class TargetObject implements InterfaceObject{    //处理真正的逻辑,不对外暴露此方法    @Override    public void common() {        System.out.println("目标对象的执行");    }    @Override    public void common2() {        System.out.println("目标对象的执行");    }}

◆代理对象ProxyObject.java

package com.tiglle.aop.interfaces.proxy;//代理对象public class ProxyObject implements InterfaceObject{    //代理对象中包含目标对象    private TargetObject targetObject;    //给目标对象赋值    public ProxyObject(TargetObject targetObject){        this.targetObject = targetObject;    }    //代理对象调用目标对象的方法,自己额外做些处理    @Override    public void common() {        System.out.println("代理对象开始执行:before");        targetObject.common();        System.out.println("代理对象结束执行:after");    }    @Override    public void common2() {        System.out.println("代理对象开始执行:before");        targetObject.common2();        System.out.println("代理对象结束执行:after");    }}

◆测试执行main方法

package com.tiglle.aop.interfaces.proxy;public class UseExec {    //调用(调用代理对象)    public static void main(String[] args) {        //向上转型        InterfaceObject interfaces = /*代理类*/new ProxyObject(new TargetObject()/*目标类*/);        //通过接口调用代理方法(目标方法)        interfaces.common();        interfaces.common2();    }}结果:代理对象开始执行:before目标对象的执行代理对象结束执行:after代理对象开始执行:before目标对象的执行代理对象结束执行:after
阅读全文
0 0