您的位置:首页 > 编程语言 > Java开发

spring aop学习5:jdk静态代理

2017-10-27 22:34 204 查看
一:基于接口的静态代理



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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring aop