代理模式
来源:互联网 发布:淘宝上的绫致时装 编辑:程序博客网 时间:2024/05/17 21:40
静态代理模式
动态代理模式
/** * 明星抽象接口 * 1.抽取真实明星类的公共方法 * @author zhangjianbin * */public interface Star { /** * 面谈 */ void confer(); /** * 唱歌 */ void sing(); /** * 收钱 */ void cdlodMoney();}
//真实明星public class RealStar implements Star { @Override public void confer() { System.err.println("于真实明星面谈"); } @Override public void sing() { System.out.println("真实明星唱歌"); } @Override public void cdlodMoney() { System.err.println("真实明星收钱"); }}
/** * 处理器对象 * 实现对真实角色的访问 * @author zhangjianbin * */public class StarHand implements InvocationHandler { private Star star; //参收真实的调用对象 public StarHand(Star realStar){ this.star = realStar; } /** * 动态产生的代理对象都要调用这个方法 * 参数: * Object proxy 代理对象 * Method method 正在调用的方法 * Object[] args 调用方法的参数 */ @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { //调用方法的返回值 Object obj = null; //前处理 System.err.println("前处理:面谈"); if(method.getName().equals("sing")){ //真实对象的方法 obj = method.invoke(star, args); } //后处理 System.out.println("后处理:收钱"); return obj; }}
public static void main(String[] args) { //真实对象 RealStar realStar = new RealStar(); //处理对象 StarHand starHand = new StarHand(realStar); //动态生成代理对象 Star star = (Star) Proxy.newProxyInstance(ClassLoader.getSystemClassLoader(), new Class[]{Star.class},starHand); //通过代理对象调用真实对象的方法 star.sing(); }
0 0
- 代理模式--动态代理
- 代理模式-静态代理
- 代理模式-静态代理
- 代理模式 & 动态代理
- 代理模式--静态代理
- 代理模式--动态代理
- 代理模式(动态代理)
- 代理模式-动态代理
- 代理模式-动态代理
- 代理模式动态代理
- 代理模式-静态代理
- 代理模式-动态代理
- 代理模式 -动态代理
- 代理模式---动态代理
- 代理模式-动态代理
- 代理模式--静态代理
- 代理模式!
- 代理模式
- 类加载器总结
- 修改基于zxing库的cordova扫描二维码插件BarcodeScan扫码界面的UI
- 【总结】刷新和上一步下一步
- LeetCode6. ZigZag Conversion
- RaspberryPi自动连接多个无线,并且自动汇报IP
- 代理模式
- 透明网关与透明防火墙
- 杭电-5562-水题
- Ubuntu 14.04 搜狗输入法安装
- 深入了解Java之二(线程方面)
- 【Android】java.lang.IllegalArgumentException Illegal character in scheme 异常
- gnnradio入门-gnuradio编程基础
- java_62_SE lesson 9
- 服装标准中纰裂试验方法的比较与探讨