预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共36页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第第1616章章 代理模式代理模式 主讲教师:程细柱韶关学院计算机系 本书主编:刘伟清华大学出版社 本章教学内容 代理模式 9模式动机与定义 9模式结构与分析 9模式实例与解析 9模式效果与应用 9模式扩展 代理模式 模式动机 9在某些情况下,一个客户不想或者不能直接引 用一个对象,此时可以通过一个称之为“代理” 的第三者来实现间接引用。代理对象可以在客 户端和目标对象之间起到中介的作用,并且可 以通过代理对象去掉客户不能看到的内容和服 务或者添加客户需要的额外服务。 代理模式 模式动机 代理模式 模式动机 代理模式 模式动机 9通过引入一个新的对象(如小图片和远程代理 对象)来实现对真实对象的操作或者将新的对 象作为真实对象的一个替身,这种实现机制即 为代理模式,通过引入代理对象来间接访问一 个对象,这就是代理模式的模式动机。 代理模式 模式定义 9代理模式(ProxyPattern):给某一个对象提 供一个代理,并由代理对象控制对原对象的引 用。代理模式的英文叫做Proxy或Surrogate, 它是一种对象结构型模式。 代理模式 模式定义 9ProxyPattern:Provideasurrogateor placeholderforanotherobjecttocontrolaccess toit. 9Frequencyofuse:mediumhigh 代理模式 Subject Š模式结构+request() Proxy Client -realSubject:RealSubjectRealSubject +preRequest()realSubject +request()+request() +postRequest() preRequest(); realSubject.request(); postRequest(); 代理模式 模式结构 9代理模式包含如下角色: •Subject:抽象主题角色 •Proxy:代理主题角色 •RealSubject:真实主题角色 代理模式 模式分析 9代理模式示意结构图比较简单,一般可以简化为如下 图所示,但是在现实中要复杂很多。 接口 实现实现 调用 代理类实现类 代理模式 模式分析 9典型的代理类实现代码: publicclassProxyimplementsSubject{ privateRealSubjectrealSubject=newRealSubject(); publicvoidpreRequest() {…...} publicvoidrequest(){ preRequest(); realSubject.request(); postRequest(); } publicvoidpostRequest() {……} } 代理模式 代理模式实例与解析 9实例一:论坛权限控制代理 •在一个论坛中已注册用户和游客的权限不同,已注册 的用户拥有发帖、修改自己的注册信息、修改自己的 帖子等功能;而游客只能看到别人发的帖子,没有其 他权限。使用代理模式来设计该权限管理模块。 •在本实例中我们使用代理模式中的保护代理,该代理 用于控制对一个对象的访问,可以给不同的用户提供 不同级别的使用权限。 代理模式 代理模式实例与解析 9实例一:论坛权限控制代理 AbstractPermission +modifyUserInfo():void +viewNote():void +publishNote():void +modifyNote():void +setLevel(intlevel):void PermissionProxy RealPermission Client-permission:RealPermission=newRealPermission() -level:int=0 +modifyUserInfo():voidpermission+modifyUserInfo():void +viewNote():void+viewNote():void +publishNote():void+publishNote():void +modifyNote():void+modifyNote():void +setLevel(intlevel):void+setLevel(intlevel):void 代理模式 代理模式实例与解析 9实例一:论坛权限控制代理 •参考代码:Chapter16Proxy\sample01 •下载地址:http://download.csdn.net/user/cflynn 演示演示………… 代理模式 代理模式实例与解析 9实例二:数学运算代理 •模拟应用远程代理来访问