理解:静态代理设计是在对象的方法上加切面逻辑,如运行前后加日志。定义一个interface,加逻辑的类和需要加逻辑的类都需要实现接口,多态的运用。
代码:
//调用类
package com.d12321.proxy;
public class Test {
public static void main(String[] args) {
Tank t = new Tank();
//先记录时间。在记录日志
TankLogProxy tlp = new TankLogProxy(t);
TankTimeProxy ttp = new TankTimeProxy(tlp);
ttp.run();
//先记录日志。在记录时间
// TankTimeProxy ttp = new TankTimeProxy(t);
// TankLogProxy tlp = new TankLogProxy(ttp);
//tlp.run();
}
}
//运行结果
1376216783480
tank start ....
Tank move ....
tank end ....
1376216783480
//接口
public interface movable {
void run();
}
//需要加逻辑的类
public class Tank implements movable{
@Override
public void run() {
System.out.println("Tank move ....");
}
}
//加逻辑的类1
public class TankTimeProxy implements movable {
private movable tank;
public TankTimeProxy(movable tank) { //父类对象指向子类对象
this.tank = tank;
}
@Override
public void run() {
System.out.println(System.currentTimeMillis());
tank.run();
System.out.println(System.currentTimeMillis());
}
}
//加逻辑的类2
public class TankLogProxy implements movable {
private movable tank;
public TankLogProxy(movable tank) {
this.tank = tank;
}
@Override
public void run() {
System.out.println("tank start ....");
tank.run();
System.out.println("tank end ....");
}
}
总结:
这是多态运用实现aop切面编程
转载于:https://blog.51cto.com/xiaodu1993/1270507