网络

教育改变生活

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 769|回复: 0
打印 上一主题 下一主题

设计者模式:3. 代理模式

[复制链接]

388

主题

389

帖子

1590

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1590
跳转到指定楼层
楼主
发表于 2021-5-20 16:58:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
3. 代理模式:
一)静态代理
实现方式:
a) 为真实类和代理类提供的公共接口或抽象类。(租房)
b) 真实类,具体实现逻辑,实现或继承a。(房主向外租房)
c)  代理类,实现或继承a,有对b的引用,调用真实类的具体实现。(中介)
d) 客户端,调用代理类实现对真实类的调用。(租客租房)
二)动态代理
实现方式:
a) 公共的接口(必须是接口,因为Proxy类的newproxyinstance方法的第二参数必须是个接口类型的Class)
b) 多个真实类,具体实现的业务逻辑。
c)  代理类,实现InvocationHandler接口,提供Object成员变量,和Set方法,便于客户端切换。
d) 客户端,获得代理类的实例,为object实例赋值,调用Proxy.newproxyinstance方法在程序运行时生成继承公共接口的实例,调用相应方法,此时方法的执行由代理类实现的Invoke方法接管。

jdk动态代理使用的局限性:通过反射类Proxy和InvocationHandler回调接口实现的jdk动态代理,要求委托类必须实现一个接口,但事实上并不是所有类都有接口,对于没有实现接口的类,便无法使用该方方式实现动态代理。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

WEB前端

QQ|手机版|小黑屋|金桨网|助学堂  咨询请联系站长。

GMT+8, 2024-9-21 12:27 , Processed in 0.034044 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表