代理模式(Proxy)

1、本质:控制对象访问

2、使用示例:

    1、当需要从数据库获取某公司所有人员信息时

    2、每一位人员有很多字段,比如几百上千个

    3、如果全部获取出来,将消耗特别多的内存

    4、解决基本思路:只需要返回用户编号和用户姓名等基本信息,再次使用时,可以根据编号再去数据库获取        --以时间换空间

3、示意图:

    

4、代理分类:

    1、虚代理

        根据需要来创建开销很大的对象,该对象只有在需要的时候才会被真正创建

    2、远程代理

        用来在不同的地址空间上代表同一个对象,这个不同的地址空间可以在本机,也可以在其他机器上。(RMI)

    3、copy-on-write代理

        在客户端操作的时候,只有对象却是改变了,才会真的拷贝(或克隆)一个目标对象,可以算虚代理的一个分支

    4、保护代理

        控制对原始对象的访问,如果有需要,可以给不同的用户提供不同的访问权限,以控制他们对原始对象的访问

    5、Cache代理

        为那些昂贵操作的结果提供临时的存储空间,以便多个客户端可以共享这些结果

    6、防火墙代理

        保护对象不被恶意用户访问和操作

    7、同步代理

        使多个用户能够同时访问目标对象而没有冲突

    8、智能引用

        在访问对象时,执行一些附加操作。例如:对指向实际对象的引用计数、第一次引用一个持久对象时,将它装入内存等

 

5、Java中的代理        --动态代理(接口的代理)    --类的代理可以用cglib

    1、代理类实现InvocationHandler接口

    2、代理类需要实现invoke方法,在这个方法中,具体判断当前是调用什么方法,需要如何处理

    3、代理类可以提供一个方法来实现:把具体的目标对象和动态代理绑定起来,并在绑定过后,返回被代理的目标对象的接口,以便客户端操作 --newProxyInstance

posted @ 2014-04-16 10:45  无名十四  阅读(156)  评论(0)    收藏  举报