zoukankan      html  css  js  c++  java
  • java设计模式之代理模式Proxy--静态代理

    很高兴,现在又有时间可以自己支配来写博客,现在就大致写一下代理模式吧。。。

    一样的,和之前来源一样,都是从马哥视频学的。

    【所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之前起到中介的作用。
    代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。 生活中的例子:过年加班比较忙,没空去买火车票,这时可以打个电话到附近的票务中心,叫他们帮你买张回家的火车票,当然这会附加额外的劳务费。但要清楚票务中心自己并不卖票,只有火车站才真正卖票,票务中心卖给你的票其实是通过火车站实现的。这点很重要!上面这个例子,你就是“客户”,票务中心就是“代理角色”,火车站是“真实角色”,卖票称为“抽象卖票”!】(摘自网络)

    废话少说,一切尽在代码之中。贴代码:

    //可以是接口,也可以是抽象类
    public interface Moveable {
    	void move();	
    }
    //一个实现类,真实角色,也就是被代理的对象
    import java.util.Random;
    public class Tank implements Moveable {
    	@Override
    	public void move() {
    		System.out.println("Tank Moving...");
    		try {
    			Thread.sleep(new Random().nextInt(10000));
    		} catch (InterruptedException e) {
    			e.printStackTrace();
    		}
    	}
    }
    //代理了Tank的时间,代理对象,也就是代理角色
    public class TankTimeProxy implements Moveable {
        public TankTimeProxy(Moveable t) {
            super();
            this.t = t;
        }
        Moveable t;
        @Override
        public void move() {
            long start = System.currentTimeMillis();
            System.out.println("starttime:" + start);
            t.move();
            long end = System.currentTimeMillis();
            System.out.println("time:" + (end-start));
        }
    }
    

      测试类

    public class Test3 {
    	public static void main(String[] args) {
    		TankTimeProxy ttp =  new TankTimeProxy(new Tank());
    		ttp.move();
    	}
    }
    //输出
    starttime:1437465854554
    Tank Moving...
    time:3518
    

      【代理模式允许使用抽象类或接口作为“抽象角色”,每个“代理角色”代理了一个“真实角色”,如果要代理的“真实角色”比较多,这势必造成大量的“代理角色”造成代码的急剧膨胀,其实其内部结构都是类似的,要是在运行时能动态生成“代理角色”就好了。】(摘自网络)

      稍后,我会写动态代理。

  • 相关阅读:
    SpringMVC+Spring+Mybatis框架集成
    Mybatis学习总结(三)——SqlMapConfig.xml全局配置文件解析
    Mybatis学习总结(二)——Mapper代理开发
    Mybatis学习总结(一)——入门基础
    Mybatis学习总结(九)——查询缓存
    Mybatis学习总结(八)——延迟加载
    1016 部分A+B (15分)
    1015 德才论 (25分)*
    1014 福尔摩斯的约会 (20分)
    1013 数素数 (20分)
  • 原文地址:https://www.cnblogs.com/wang-s/p/4664777.html
Copyright © 2011-2022 走看看