静态代理:代理类与目标类之间的代理关系在程序运行之前既定,静态代理一般具备代理类。
接口类:
/**
* 主业务接口:本接口中的方法将会被代理增强
* @author WanAkiko
*
*/
public interface ISomeService {
String doFirst();
void doSecond();
}
接口实现类:
import service.ISomeService;
/**
* 目标类:本类将会被代理类增强
* @author WanAkiko
*
*/
public class SomeServiceImpl implements ISomeService {
@Override
public String doFirst() {
System.out.println("执行目标类的doFirst方法!");
return "WanAkiko";
}
@Override
public void doSecond() {
System.out.println("执行目标类的doSecond方法!");
}
}
静态代理类:
import service.ISomeService;
/**
* 静态代理类
*
* @author WanAkiko
*
*/
public class ServiceProxy implements ISomeService {
private ISomeService target;
public ServiceProxy() {}
public ServiceProxy(ISomeService target) {
super();
this.target = target;
}
@Override
public String doFirst() {
// 调用目标对象的目标方法,该方法返回一串字母
String result = target.doFirst();
// 方法增强:将目标方法的返回值小写字母转换成大写形式
return result.toUpperCase();
}
@Override
public void doSecond() {
target.doSecond();
}
}
功能测试类:
import proxy.ServiceProxy;
import service.ISomeService;
import service.impl.SomeServiceImpl;
/**
* 功能测试类
* @author WanAkiko
*
*/
public class MyTest {
public static void main(String[] args) {
// 主业务接口实例化静态代理类
ISomeService service = new ServiceProxy(new SomeServiceImpl());
String result = service.doFirst();
System.out.println(result);
service.doSecond();
}
}
运行示例: