代理模式概述

代理模式是java开发中使用较多的一种设计模式,代理设计就是为其他对象提供一种代理以控制对这个对象的访问。

  理论概述讲的比较抽象,在这里举个栗子:假设你工作了,要组一个房子,但是你有没有空去找,然后你就找到了租房中介,你只需要把你要找的类型告诉中介,中介就会帮你找到一些,推送给你你再从中挑选。这差不多就是一个代理模式,还有明星与经纪人也是一种代理关系。这里的中介就是一个代理类,你就是被代理类,你要找房子的这件事就是一个接口。

  理论还是比较抽象,下面是一段简单的代码示例:

package proxy;

/**
 *     接口的应用:
 * 1.代理模式的简单示例;
 *     
 * @author Gary
 * @time 2019年8月9日
 */

public class ProxyTest {

    public static void main(String[] args) {
        
        //    创建一个用户对象并实例化
        Server server = new Server();
        
        //    创建一个代理人
        ProxyServer proxy = new ProxyServer(server);
        proxy.surf();
    }
}

//    定义一个接口
interface NetWork {
    
    public void surf();
}

//被代理类
class Server implements NetWork{
    
    @Override
    public void surf() {
        System.out.println("真实用户联网\t");
    }
}

//代理类
class ProxyServer implements NetWork {
    
    //    声明一个接口对象
    private NetWork work;
    
    //    构造方法,可以传入一个真实的用户
    public ProxyServer(NetWork work) {
        this.work = work;
    }
    
    public void check() {
        System.out.println("联网前的检查工作\t");
    }
    
    //1、代理类中的接口实现方法不是自己调用,而是调用一个接口对象,采用接口回调的方式让真实用户调用接口的方法
    @Override
    public void surf() {
        check();
        work.surf();
    }
}

应用场景

  安全代理:屏蔽对真实角色的直接访问。

  远程代理:通过代理类处理远程方法调用(RMI)

  延迟加载:先加载轻量级的代理对象,真正需要再加载真实对象

    如:你需要开发一个大文档查看软件,大文档中有大的图片,有可能一个图片有100MB,在打开文件时,不节能将所有的图片都显示出来,这样就可以使用代理模式,当需要查看图片时,用proxy来进行大图片大的打开

分类

  静态代理(静态定义代理类)(上面的事例为静态代理)

  动态代理(动态生成代理类)(能够动态的生成代理类,为更多的被代理类所应用)

 

注:此处是代理模式的简单理解,代理模式在后续的java高级学习中在更深入的讲解。

posted on 2019-08-09 09:54  Gary757  阅读(117)  评论(0编辑  收藏  举报