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
- java动态代表类
- java十大代表
- JAVA.SWT/JFace: SWT类所代表的事件常量
- 代表
- java 里 泛型中 <T>代表什么类型
- Java中“/”,“.”所代表的文件路径
- java web中 /代表的目录
- Java Business Delegate Pattern(业务代表模式)
- java动态加载类
- java 动态加载类
- java动态调用类
- Java 动态加载类
- java动态加载类
- Java动态类加载
- Java动态类加载
- Java动态类加载
- java动态加载类
- Java 动态卸载类
- 鸟哥的linux私房菜
- VMware 10 序列号
- 学习ASP.NET小结
- Eclipse插件
- 注册ocx不兼容
- java动态代表类
- Activity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView
- 让Git以彩色输出
- 3D游戏技术 - 大型3D地图优化渲染技术
- Linux下的压缩解压缩命令详解
- Oracle锁-OWI体系中的认识
- 总线-设备-驱动模型
- 歌星大赛
- 项目总结