静态代理

静态代理的代理类持有要代理的目标类的引用。代理关系是确定的。每一个需要代理的类都需要一个代理类来持有他的引用
  1. 定义一个接口 IRegisterService
public interface IRegisterService {
    void register(String name, String pwd);
}
  1. 创建被代理的类,并实现 接口
public class RegisterServiceImpl implements IRegisterService {
    @Override
    public void register(String name, String pwd) {
        System.out.println(String.format("【向数据库中插入数据】name:%s,pwd:%s", name, pwd));
    }
}
  1. 创建代理类,并实现接口
class RegisterServiceProxy implements IRegisterService {
    // 代理类持有被代理类对象的引用
    IRegisterService iRegisterService;

    public RegisterServiceProxy(IRegisterService iRegisterService) {
        this.iRegisterService = iRegisterService;
    }

    @Override
    public void register(String name, String pwd) {
        System.out.println("[Proxy]一些前置处理");
        //这里调用被代理类的方法,也是静态指定的
        iRegisterService.register(name, pwd);
        System.out.println("[Proxy]一些后置处理");

    }
}
  1. 测试
public class StaticProxy {
    public static void main(String[] args) {
        IRegisterService iRegisterService = new RegisterServiceImpl();
        IRegisterService proxy = new RegisterServiceProxy(iRegisterService);
        proxy.register("RyanLee", "123");
    }
}