静态代理
静态代理的代理类持有要代理的目标类的引用。代理关系是确定的。每一个需要代理的类都需要一个代理类来持有他的引用
- 定义一个接口 IRegisterService
public interface IRegisterService {
void register(String name, String pwd);
}
- 创建被代理的类,并实现 接口
public class RegisterServiceImpl implements IRegisterService {
@Override
public void register(String name, String pwd) {
System.out.println(String.format("【向数据库中插入数据】name:%s,pwd:%s", name, pwd));
}
}
- 创建代理类,并实现接口
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]一些后置处理");
}
}
- 测试
public class StaticProxy {
public static void main(String[] args) {
IRegisterService iRegisterService = new RegisterServiceImpl();
IRegisterService proxy = new RegisterServiceProxy(iRegisterService);
proxy.register("RyanLee", "123");
}
}