动态代理

来源:互联网 发布:特百惠淘宝上有授权吗 编辑:程序博客网 时间:2024/05/16 06:26
package com.bjpowernode.spring;public interface UserManager {public void addUser(String username, String password);public void delUser(int userId);public String findUserById(int userId);public void modifyUser(int userId, String username, String password);}
package com.bjpowernode.spring;public class UserManagerImpl implements UserManager {public void addUser(String username, String password) {//checkSecurity();System.out.println("---------UserManagerImpl.add()--------");}public void delUser(int userId) {//checkSecurity();System.out.println("---------UserManagerImpl.delUser()--------");}public String findUserById(int userId) {//checkSecurity();System.out.println("---------UserManagerImpl.findUserById()--------");return "张三";}public void modifyUser(int userId, String username, String password) {//checkSecurity();System.out.println("---------UserManagerImpl.modifyUser()--------");}//private void checkSecurity() {//System.out.println("-------checkSecurity-------");//}}

package com.bjpowernode.spring;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 createProxyInstance(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 = method.invoke(targetObject, args);return ret;}private void checkSecurity() {System.out.println("-------checkSecurity-------");}}

package com.bjpowernode.spring;public class Client {public static void main(String[] args) {SecurityHandler hander = new SecurityHandler();UserManager useraManager = (UserManager)hander.createProxyInstance(new UserManagerImpl());useraManager.addUser("张三", "123");}}


原创粉丝点击