静态代理并手写
优点(这样的代理方式调用者其实都不知道被代理对象的存在)
ProxyImplement代理类
public class ProxyImplement implements InterfaceA {
private InterfaceA interfaceA;
public ProxyImplement(){
interfaceA = new RealImplement();
}
@Override
public void exec() {
System.out.println("dosomethings before");
interfaceA.exec();
System.out.println("dosomethings after");
}
}
RealImplement实现类
public class RealImplement implements InterfaceA {
@Override
public void exec() {
System.out.println("real impl");
}
}
接口
public interface InterfaceA {
void exec();
}
main
public class SpringAOP {
public static void main(String[] args) {
//创建了一个代理类,里面封装了InterfaceA的实现类,在代理类里new了RealImplement的实现并调用
// 这种是静态代理,静态代理只能代理一个具体的类
// 如果要代理一个接口的多个实现的话需要定义不同的代理类
InterfaceA interfaceA = new ProxyImplement();
interfaceA.exec();
}
}