系列文章:
6. Spring实例参考06-setter注入的10种方式
9. Spring实例参考09-静态代理
11. Spring实例参考11-API实现AOP前置/后置通知
前言
本文供以下文章参考使用:
Spring基础回顾__evenif的博客-CSDN博客
1 接口
package com.evenif.proxy;
public interface Shape {
public void draw();
}
2 具体实现类一
package com.evenif.proxy;
public class Rectangle implements Shape{
@Override
public void draw() {
System.out.println(" draw one rectangle");
}
}
3 具体实现类二
package com.evenif.proxy;
public class Triangle implements Shape{
@Override
public void draw() {
System.out.println("draw one triangle");
}
}
4 代理类
package com.evenif.proxy;
public class ShapeProxy implements Shape {
Shape shape;
public ShapeProxy(Shape shape) {
this.shape = shape;
}
public void before(){
System.out.println("准备画图形了:");
}
public void after(){
System.out.println("图形绘画结束!");
}
@Override
public void draw() {
before();
shape.draw();
after();
}
}
5 测试类
package com.evenif.proxy;
public class Client {
public static void main(String[] args) {
Rectangle rectangle = new Rectangle();
ShapeProxy proxy = new ShapeProxy(rectangle);
proxy.draw();
Triangle triangle = new Triangle();
proxy = new ShapeProxy(triangle);
proxy.draw();
}
}
//运行结果:
// 准备画图形了:
// draw one rectangle
// 图形绘画结束!
// 准备画图形了:
// draw one triangle
// 图形绘画结束!