- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一个例子:电脑代理商 抽象主题角色:SaleComputer 代理主题角色:ComputerProxy 真实主题角色:ComputerMaker 抽象主题角色(SaleComputer)的代码: abstract class salecomputer{ abstract public void salecomp(); } 真实主题角色(computermaker)的代码: class computermaker extends salecomputer{ public void salecomp() { System.out.println(卖出了一台电脑); } } 代理主题角色(computerproxy)的代码: class computerproxy extends salecomputer{ computermaker cm;//把电脑制造商角色作为代理商角色的属性 public void salecomp()//封装了computermaker的salecomp()方法 { youhui(); givemose(); if(cm==null) { cm=new computermaker(); } cm.salecomp(); } public void youhui(){ System.out.println(给你优惠); } public void givemose() { System.out.println(赠你鼠标); } } 客户端的代码: public class buycomputer { public static void main(String[] args) { salecomputer buyer=new computermaker(); buyer.salecomp(); } } 运行效果: 卖出了一台电脑 客户端的代码: public class buycomputer { public static void main(String[] args) { //salecomputer buyer=new computermaker(); salecomputer buyer=new computerproxy(); buyer.salecomp();} } 运行效果: 给你优惠 赠你鼠标 卖出了一台电脑 Java动态代理类位于Java.lang.reflect包下,一般主要涉及到以下两个类: (1). Interface InvocationHandler:该接口中仅定义了一个方法Object invoke(Object obj,Method method, Object[] args)。在实际使用时,第一个参数obj一般是指代理类,method是被代理的方法,如上例中的request(),args为该方法的参数数组。这个抽象方法在代理类中动态实现。 谢 谢 观 看! * * * 第*页 小组成员: 杨丽丽 左鹏飞 黎明东 汪洋 代理模式 代理模式又叫Proxy模式(英文)。所谓的代理,就是一个人或者一个机构代替另一个人或者另一个机构去做一些事情。(类似于中介或者代理商)。 第*页 Windows操作系统里面的例子 快捷方式 生活中的列子 比如去买票,由于你要上班,没时间去买票,就得到票 务中介代你购买,这就是一种代理模式。 这个情景可以形象的描述如下: class:火车站 { ??????? 卖票: ?????? {……} } 第*页 火车站是卖票的地方,我们假设只能在火车站买到票。卖票的动作实质是火车站类完成的。 Class:票务中介 { ??????? 卖票: ??????? { ??????? ??????收中介费; ?????? ?????? 到火车站订票; } } 第*页 ?? 顾客找票务中介买票的时候,调用票务中介.卖票。票务中介其实做了两件事,一是去火车站买票,二是不能白帮你卖票,肯定要收中介费。而你得到的好处是不用直接去火车站买票,节省了买票的时间用来上班。 第*页 代理模式所涉及的角色有: 抽象主题角色:声明了真实主题与代理主题的共同接口(共有的特性) 代理主题角色:含有对真实主题角色的引用(操作真实主体对象),代理角色通常在将客户端调用传递给真实主题对象的之前或者之后都会执行某些操作(方法),而不是只单纯的返回真实的对象。 真实主题角色:定义了代理角色所代表的真实对象。 第*页 第*页 Subject类,定义了RealSubject和Proxy的公共接口,这样就在任何使用RealSubject的地方都可以使用Proxy a
文档评论(0)