代理模式
来源:互联网 发布:扣压高压油管算法数据 编辑:程序博客网 时间:2024/06/07 19:20
代理模式
静态代理
继承方式实现
public interface Moveable { void move();}
public class Car implements Moveable { @Override public void move() { // 实现开车 try { System.out.println("汽车行驶中..."); Thread.sleep(new Random().nextInt(1000)); } catch (InterruptedException e) { e.printStackTrace(); } }}
public class Car2 extends Car { @Override public void move() { long startTime = System.currentTimeMillis(); System.out.println("汽车开始行驶"); super.move(); long endTime = System.currentTimeMillis(); System.out.println("结束行驶,行驶了"+(endTime-startTime)+"ms"); }}
public static void main(String[] args) { Car2 car2 = new Car2(); car2.move(); }
聚合方式实现
public class Car3 implements Moveable { private Car car; public Car3(Car car) { super(); this.car = car; } @Override public void move() { long startTime = System.currentTimeMillis(); System.out.println("汽车开始行驶"); car.move(); long endTime = System.currentTimeMillis(); System.out.println("结束行驶,行驶了" + (endTime - startTime) + "ms"); }}
public static void main(String[] args) { Car car = new Car(); Moveable m = new Car3(car); m.move(); }
jdk动态代理
public class TimeHandler implements InvocationHandler { private Object target; public TimeHandler(Object target) { super(); this.target = target; } /** * @param proxy 被代理的对象 * @param method 被代理对象的方法 * @param args 方法的参数 * @return Object 方法的返回值 */ @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { long startTime = System.currentTimeMillis(); System.out.println("汽车开始行驶"); method.invoke(target); long endTime = System.currentTimeMillis(); System.out.println("结束行驶,行驶了"+(endTime-startTime)+"ms"); return null; }}
public static void main(String[] args) { Car car = new Car(); InvocationHandler h = new TimeHandler(car); Class<?> c = car.getClass(); Moveable m = (Moveable) Proxy.newProxyInstance(c.getClassLoader(), c.getInterfaces(), h); m.move(); }
0 0
- 代理模式--动态代理
- 代理模式-静态代理
- 代理模式-静态代理
- 代理模式 & 动态代理
- 代理模式--静态代理
- 代理模式--动态代理
- 代理模式(动态代理)
- 代理模式-动态代理
- 代理模式-动态代理
- 代理模式动态代理
- 代理模式-静态代理
- 代理模式-动态代理
- 代理模式 -动态代理
- 代理模式---动态代理
- 代理模式-动态代理
- 代理模式--静态代理
- 代理模式!
- 代理模式
- Android 编程下通过 Theme 和 Style 避免 APP 启动闪黑屏或者白屏,快速启动
- Nginx+tomcat实现集群和负载均衡
- 使用sklearn进行文本TF-IDF处理
- 命令行运行java程序(新手必会)
- 非技术
- 代理模式
- div按钮CSS
- selenium+python键盘加鼠标操作
- 首页头部提示布局
- 阿里云安装配置
- 二十、UI-Grid 编辑功能
- 使用BlockingQueue实现生产者消费者模式
- Linux分区
- 第一个安卓程序访问服务器的Servlet,Servlet访问数据库