java代理静态代理


一、静态代理:

//业务接口:本接口中的业务方法要被代理增强
public interface ISomeService {
String doFirst();
void doSeconde();
}


//目标类:代理类要增强的类
public class SomeServiceImpl implements ISomeService {


@Override
public String doFirst() {
System.out.println("执行doFirst()方法");
return "abcde";
}


@Override
public void doSeconde() {
System.out.println("执行doSeconde()方法");


}


}

接下来写一个静态代理类,用来增强方法:

public class ServiceProxy implements ISomeService {//实现同一个接口

private ISomeService target;//生成目标对象

public ServiceProxy() {

}

public ServiceProxy(ISomeService target) {
super();
this.target = target;
}
//对要增强的方法增强
@Override
public String doFirst() {
target = new SomeServiceImpl();
//调用目标对象的目标方法
String result = target.doFirst();
// 增强:将目标方法返回的字母全大写
result = result.toUpperCase();
return result;

}
@Override
public void doSeconde() {
target.doSeconde();
}
}


测试:

public class MyTest {


public static void main(String[] args) {
ISomeService target = new SomeServiceImpl();//生成目标对象
ISomeService service = new ServiceProxy(target);//生成代理对象
String result = service.doFirst();
String reslut1 = target.doFirst();
System.out.println(result);//增强方法1
System.out.println(reslut1);//不增强方法1,写法是比较统一的
service.doSeconde();
target.doSeconde();
}


}

结果:

执行doFirst()方法
执行doFirst()方法
ABCDE
abcde
执行doSeconde()方法
执行doSeconde()方法

通过代理的的方法已经被增强

猜你喜欢

转载自blog.csdn.net/weixin_39073469/article/details/78797688