动态署理ITeye - 凯发娱乐

动态署理ITeye

2019年02月19日07时32分36秒 | 作者: 海超 | 标签: 客户端,调用 | 浏览: 1970

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

署理完成

package com.bjsxt.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 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 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);
 }
}

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章