java动态代表类

来源:互联网 发布:超人软件站官网 编辑:程序博客网 时间:2024/06/05 05:30

主要用途针对某些业务场景进行前或后的特殊业务的验证,如删除用户时确保该用户存在

public class Client {public static void main(String[] args) {//UserManager userManager = new UserManagerImpl();SecurityHandler handler = new SecurityHandler();UserManager userManager = (UserManager)handler.newProxy(new UserManagerImpl());//userManager.addUser("张三", "123");userManager.deleteUser(1);}}


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()----------");}}



0 0
原创粉丝点击