静态代理,动态代理---笔记
来源:互联网 发布:小指头结局 知乎 编辑:程序博客网 时间:2024/06/06 20:12
- 静态代理
例如租房子。
public interface Leasing { public String doLeasing(String name,long money);}
一般实现类
public class LeasingImpl implements Leasing { public String doLeasing(String name ,long money) { return name+"租到房,价格:"+money; }}
中介的实现类
public class PreoxyLeasing implements Leasing { LeasingImpl mLeasImpl; public PreoxyLeasing( LeasingImpl mLeasImpl) { this.mLeasImpl =mLeasImpl; } @Override public String doLeasing(String name,long money) { getMoeyFromUser(); System.out.println("用户多花了"+(money/2)); getMoeyFromHouser(); System.out.println("房东多花了"+(money/2)); return name+"中介帮忙租到房子 价格:"+money; } public void getMoeyFromUser() { System.out.println("收取用户的一半租金"); } public void getMoeyFromHouser() { System.out.println("收取房东的一半租金"); }}
租客自己租房。
Leasing mLeas = new LeasingImpl(); System.out.println(mLeas.doLeasing("自己",1000l));
租客通过中介来租房
Leasing mLeas = new LeasingImpl(); mLeas = new PreoxyLeasing(new LeasingImpl()); System.out.println(mLeas.doLeasing("中介",1000l));
- 动态代理。
首先实现InvocationHandler接口,处理invoke方法,使用动态代理,调用每个方法都会执行invoke方法。
public class LeasingHandler implements InvocationHandler { Object mBase; public LeasingHandler(Object mBase) { this.mBase = mBase; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { //拦截方法 if("doLeasing".equals(method.getName())) { { System.out.println("收用户一半的房租"); System.out.println("收房主一半的房租"); Long money = (Long) args[1]; money +=money/2; // 帮忙租房子 String things = (String) method.invoke(mBase,args[0], money); return things; } } return null; }}
0 0
- 静态代理,动态代理---笔记
- 静态代理和动态代理学习笔记
- java静态代理与动态代理笔记
- Java静态代理&动态代理笔记
- 代理-->静态代理&动态代理
- 动态代理,静态代理
- 静态代理 动态代理
- 静态代理/动态代理
- 静态代理&动态代理
- 静态代理&动态代理
- 静态代理 & 动态代理
- 静态代理&动态代理
- 动态代理,静态代理
- Java代理学习笔记(静态代理&动态代理)
- 静态代理与动态代理
- 静态代理与动态代理
- 静态代理与动态代理
- 静态代理与动态代理
- PLSQL数组
- 10分钟教你学会三级缓存
- VLC音频重采样Audio resample核心流程梳理
- android studio快捷键
- Hadoop的InputFormats和OutputFormats
- 静态代理,动态代理---笔记
- 第十三周项目2动物这样叫
- 十大Intellij IDEA快捷键
- 【idea 14】 Idea 使用之 Project Structure 模块
- 通过回调在fragment中获取activity的触摸事件
- apache 配置虚拟目录+默认页+隐藏index.php
- 初次接触使用VPN的几大误区
- Button 按钮的点击时候出现蓝色边框
- plsql查询oracle数据库 出现中文乱码(特别是在查询日期时对年月日显示乱码)