理解:静态代理设计是在对象的方法上加切面逻辑,如运行前后加日志。定义一个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切面编程