java的静态代理: 代理类: public class UserManagerImplProxy implements UserManager { private UserManager userManager; public UserManagerImplProxy(UserManager userManager) { this.userManager = userManager; } public void addUser(String username, String password) { checkSecurity(); this.userManager.addUser(username, password); } public void deleteUser(int id) { checkSecurity(); this.userManager.deleteUser(id); } public String findUserById(int id) { return null; } public void modifyUser(int id, String username, String password) { } private void checkSecurity() { System.out.println("----------checkSecurity()---------------"); } } 用户接口: public interface UserManager { public void addUser(String username, String password); public void deleteUser(int id); public void modifyUser(int id, String username, String password); public String findUserById(int id); } 用户实现类: public class UserManagerImpl implements UserManager { public void addUser(String username, String password) { System.out.println("-------UserManagerImpl.addUser()----------"); } public void deleteUser(int id) { System.out.println("-------UserManagerImpl.deleteUser()----------"); } public String findUserById(int id) { System.out.println("-------UserManagerImpl.findUserById()----------"); return null; } public void modifyUser(int id, String username, String password) { System.out.println("-------UserManagerImpl.modifyUser()----------"); } } 客户端实现: public class Client { public static void main(String[] args) { UserManager userManager = new UserManagerImplProxy(new UserManagerImpl()); userManager.deleteUser(1); } } java的动态代理: 代理类: import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class SecurityHandler implements InvocationHandler { private Object targetObject; public Object newProxy(Object targetObject) { this.targetObject = targetObject; return Proxy.newProxyInstance(targetObject.getClass().getClassLoader(), targetObject.getClass().getInterfaces(), this); } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { checkSecurity(); Object ret = null; try { ret = method.invoke(this.targetObject, args); }catch(Exception e) { e.printStackTrace(); throw new java.lang.RuntimeException(e); } return ret; } private void checkSecurity() { System.out.println("----------checkSecurity()---------------"); } } 用户接口: public interface UserManager { public void addUser(String username, String password); public void deleteUser(int id); public void modifyUser(int id, String username, String password); public String findUserById(int id); } 用户实现类: public class UserManagerImpl implements UserManager { public void addUser(String username, String password) { System.out.println("-------UserManagerImpl.addUser()----------"); } public void deleteUser(int id) { System.out.println("-------UserManagerImpl.deleteUser()----------"); } public String findUserById(int id) { System.out.println("-------UserManagerImpl.findUserById()----------"); return null; } public void modifyUser(int id, String username, String password) { System.out.println("-------UserManagerImpl.modifyUser()----------"); } } 客户端得实现: public class Client { public static void main(String[] args) { SecurityHandler handler = new SecurityHandler(); UserManager userManager = (UserManager)handler.newProxy(new UserManagerImpl()); //userManager.addUser("张三", "123"); userManager.deleteUser(1); }