首先,有个类
public class A {
public int add(int p) {
return 100 + p;
}
public int sub(int p) {
return 100 - p;
}
}
给类A写一个代理类
public class B extends A {
private A a;
public B(A a){
this.a=a;
}
public int add(int p) {
return a.add(p);//这就实现了对a的代理,也可以添加其他逻辑
}
public int sub(int p) {
return a.sub(p);//这就实现了对a的代理,也可以添加其他逻辑
}
}
上面的代理类写完后。。客户只要把目标对象给代理类,然后对该目标对象创建一个代理对象。
客户操作代理对象,然后代理对象再操作目标对象。
具体代码
public void test(){
A a=new A(); //首先创建目标对象
B b=new B(a);//创建代理对象
//调用代理对象方法
b.add(10); //间接调用a的add,并且在调用a的add方法前后还添加了一些代码处理逻辑
b.sub(20); //间接调用b的sub,并且在调用a的sub方法前后还添加了一些代码处理逻辑
//代理模式的用处就是在不更改原来的类的同事增加一些处理逻辑。。spring aop就是这样的原理
}