java静态代理模式

代理模式分为动态代理和静态代理。

静态代理简述:

  1、为其他对象提供一种代理,以控制对这个对象的访问。

  2、代理对象会起到中介的作用,可以增加些功能,也可以去掉某些功能。

静态代理:

  代理和被代理对象在代理之前就是确认的,他们都是实现了相同的接口或者继承了相同的抽象类。

常见的代理模式:

虚拟代理:

当我们在浏览帖子的时候,有些页面加载很多图片,但是刚打开网页的时候,这些图片都是默认logo,当图片加载完成的时候才会显示出来,当图片被加载的时候,也不会影响我们观看文字。

下面是静态代理的Demo:

首先是一个小汽车,增加行驶的方法:

public interface Moveable {

    //增加一个行驶的接口
    void move();
}

创建汽车类,实现move方法:

public class Car implements Moveable {

    @Override
    public void move() {

        //实现开车,开车时间为1秒钟
        try {
            Thread.sleep(new Random().nextInt(1000));
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

最后我们创建Car2类,继承Car类,重写move()方法,并在实现的前后增加业务:

    @Override
    public void move() {
        long starttime = System.currentTimeMillis();
        System.out.println("汽车开始行驶...");
        super.move();
        long endtime = System.currentTimeMillis();
        System.out.println("汽车结束行驶...");
        System.out.println("汽车行驶时间:" + (endtime - starttime) + "毫秒!");
    }

    public static void main(String[] args) {
        Moveable m = new Car2();
        m.move();
    }
}

输出结果:

汽车开始行驶...
汽车结束行驶...
汽车行驶时间:868毫秒!

 以上就是使用继承的方式,实现的简单的静态代理,在汽车行驶的时候增加记录时间的业务,但是不推荐使用继承的方式实现代理,如果业务逻辑很多的话,代码会无限的膨胀下去。

猜你喜欢

转载自www.cnblogs.com/itiande/p/9037193.html