设计模式之代理模式之二(Proxy)
2012-05-23 20:49
471 查看
0.前言
在前面一篇博客设计模式之代理模式(Proxy)中我们已经讲解了一部分代理模式,下面我们继续讲解代理的有关内容,包括代理的分类以及java中的代理。1.代理的分类
事实上代理能够被分为很多种类,大致有如下这些:虚代理、远程代理、copy-on-write代理、保护代理、Cache代理、防火墙代理、同步代理、智能指引。在这里我们会介绍虚代理和保护代理。在设计模式之代理模式(Proxy)中提到的代理就是一个典型的虚代理的实现。起初每个代理对象只有用户编号和姓名数据,直到需要的时候,才会把整个用户的数据装载到内存中来。也就是说,要根据需要来装载整个UserModel的数据,虽然用户数据对象时前面已经创建好了的,但是只有用户编号和姓名的数据,可以看成是一个“虚”的对象,知道通过代理把所有的数据都设置好,才算是一个完整的用户数据对象。
保护代理是一种控制对原始对象访问的代理,多用于对象应该有不同的访问权限的时候。保护代理会检查调用者是否具有请求所必需的访问权限,如果没有相应的权限,那么就不会调用目标对象,从而实现对目标对象的保护。
2.java中的代理
2.1静态代理
通常把前面自己实现的代理模式成为Java的静态代理。这种实现方式有一个较大的缺点,就是如果Subject接口发生变化,那么代理类和具体的目标实现类都要变化,不是很灵活。而使用Java内建的对代理模式支持的功能来实现则不需要修改代理类。静态代理的代码实例如下所示:(1)创建Subject接口
View Code
package edu.sjtu.erplab.dynamicproxy; public class DynamicProxyDemo { public static void main(String[] args) { //实例化代理操作类 MyInvocationHandler hander=new MyInvocationHandler(); //绑定实际对象 Subject sub=(Subject) hander.bind(new RealSubject()); String info=sub.say("xuwei", 25); System.out.println(info); } }
输出结构
class $Proxy0
say
[xuwei, 25]
姓名:xuwei,年龄:25
相关文章推荐
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式C++学习笔记之二(Proxy代理模式)
- C++设计模式之二--Proxy代理模式
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式之代理模式之二(Proxy)
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式C++学习笔记之二(Proxy代理模式)
- Java设计模式之从[游戏场景读取]分析代理(Proxy)模式
- 【CDP-云设计模式】第4章,8.缓存代理模式(Cache Proxy Pattern)
- 优雅的表单验证模式--策略设计模式和ES6的Proxy代理模式
- 设计模式:代理模式(Proxy)