第85章
publicRealSubject
abstractpublicclassSubject
abstractpublicvoidrequest;
//真实角色:实现了Subject的request方法
publicclassRealSubjectextendsSubject
realSubject=newRealSubject;
;//此处执行真实对象的request方法
postRequest;
privatevoidpreRequest
//somethingyouwanttodobeforerequesting
privatevoidpostRequest
//somethingyouwanttodoafterrequesting
4)(你)
//客户端调用
publicclassClient
publicstaticvoidmain(Stringargs)
//你直接找(秘书)
Subjectsub=newProxySubject;
www.youxs.org;
运行输出了“我是局长,哈哈”
大B:“这说明我们通过代理对象(秘书)成功调用了被代理对象(局长)的方法。由代码可以看出,客户实际需要调用的是RealSubject类的request方法,现在用ProxySubject来代理RealSubject类,同样达到目的,同时还封装了其他方法(preRequest,postRequest),可以处理一些其他问题。”
(你)、(秘书)、(局长)、(关系)
(1)(关系)
//代理角色
publicclassProxySubjectextendsSubject
小A:“代理模式有什么作用呢?”
//抽象角色www.smrhm.com 幻想小说网
privateRealSubjectrealSubject;//以真实角色作为代理角色的属性
publicProxySubject
publicvoidrequest//该方法封装了真实对象的request方法
大B:“1、抽象角色(秘书-局长):声明真实对象和代理对象的共同接口(秘书-局长)。2、代理角色(秘书):代理对象角色(秘书)内部含有对真实对象(局长)的引用,从而可以操作真实对象(局长),同时代理对象(秘书)提供与真实对象(局长)相同的接口(秘书-局长)以便在任何时刻都能代替真实对象(局长)。同时,代理对象(秘书)可以在执行真实对象(局长)操作时,附加其他的操作,相当于对真实对象(局长)进行封装。3、真实角色(局长):代理角色(秘书)所代表的真实对象(局长),是我们最终要引用的对象(局长)。”
下面用四个代码来是这个原理:
大B:“再举个通俗的例子,你想找某局长帮你做一件事情,但局长官位显赫,你又不能轻易见着,你就想到了找他的秘书,通过她传话给局长,这样你就等于请他的秘书帮你办成了那件事。秘书为什么就可以找到局长呢,因为秘书和局长之间有一定的关系。这里产生了四个对象:你、秘书、局长、秘书-局长(关系)。JAVA中同样有代理关系,我们叫做代理模式。”
publicvoidrequest
(“我是局长,哈哈”);
(3)(秘书)
preRequest;
if(realSubject……null)
(2)(局长)
大B:“他能为其他对象(局长)提供一种代理(秘书)以控制对这个对象(局长)的访问。代理对象可以在客户端(你)和目标对象(局长)之间起到中介的作用。”
小A:“代理模式都有些什么角色?”
阅读大话设计模式最新章节 请关注米妮小说网(www.qixinyuan.com.cn)
智能推荐:【拥有学习面板的神豪】【重生之奶爸的悠闲生活】【宝可梦侦探:竹兰逼我领养精灵】【我的1992在延续】【都市第一至尊】【风口无敌】【将夜:吾为当世仙】【陈浩苏雪】【理综挂科后我被迫屠龙了】【不辞春山】【人在东京,收租从太太开始】【全民深渊:我技能无限强化】【我怎么就成F1车手了?】【世界首富之我是股神】【这个训练家的宝可梦过于跳脱】【福晋】【仙子的修行】【七零大杂院小寡妇】【黄昏分界】【诡道求仙,从将自己炼成傀儡开始】【金丹是恒星,你管这叫修仙?】【半岛之如影随形】【克拉夫特异态学笔记】【重生99做汽车巨头】【龙王医婿全文免费阅读】【游戏王:决斗者的奇幻冒险】【今天也没能扬帆起航】【第一次魔法世界大战】【枕刀】【影视:流窜在诸天的收集员】