該執行個體是類比安全性檢查
被代理對象介面定義 Java代碼 public interface UserManager { public void aadUser(User user); public void deleteById(int id); public void updateUser(User user); public User findById(int id); }
被代理對象介面實現 Java代碼 public class UserManagerImp implements UserManager { @Override public void aadUser(User user) { System.out.println("----------addUser------------"); } @Override public void deleteById(int id) { System.out.println("----------deleteById------------"); } @Override public User findById(int id) { System.out.println("----------findById------------"); return null; } @Override public void updateUser(User user) { System.out.println("----------updateUser------------"); } }
定義一個user對象 Java代碼 public class User { private int id; private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getId() { return id; } public void setId(int id) { this.id = id; } }
繼承InvocationHandler介面 Java代碼 package hb.proxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; /* * 1、動態代理類一定要實現InvocationHandler介面,就要實現invoke()方法 */ public class SecurityHandler implements InvocationHandler { private Object targetObject; /* * 下面方法是得到代理對象,如果得不到代理對象,這個效果也是沒有作用的 * 最後一個參數是InvocationHandler介面,這也是為什麼動態代理對象一定要實現這個介面的原因 * 得到的代理對象會執行invoke()方法 */ public Object newProxy(Object targetObject){ this.targetObject = targetObject;