设计模式之--代理模式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设计模式之--
代理模式
Hale Waihona Puke 例子--为别人作嫁衣: 小王喜欢班上的一个女生娇娇,但他又不好 意思亲自给娇娇说,于是小王请小张帮忙给 娇娇送花,送巧克力等。
例子的实现
追求者 +送鲜花() +送巧克力() +送洋娃娃() 被追求者 姓名:string
代理 +送鲜花() +送巧克力() +送洋娃娃()
被追求者
代理模式结构图
givegift
pursuit
proxy
总结
意图: 为其它对象提供一个代理以控制对这个对象 的访问。 实体:subject类定义了realsubject和 proxy类的公共接口,在任何使用 realsubject的地方均可以使用proxy。
客户端代码:
void main() { schoolgirl jiaojiao=new schoolgirl(); =“娇娇”; proxy xiaozhang=new proxy(jiaojiao); xiaozhang.givedolls(); xiaozhang.giveflowers(); xiaozhang.givechocolate(); }
//追求者类 Class pursuit:givegift {schoolgirl mm; public pursuit(schoolgirl mm) {this.mm=mm;} public void giveflowers() { Console.WriteLine<<+ “送你鲜花”);} public void givedolls() {Console.WriteLine <<+“送你洋娃娃”);} public void givechocalate() {Console.WriteLine <<+“送你巧克力”);} }
具体的代码:
//被追求者类 class schoolgirl {private string name; public string name { get {return name;} set {name=value;} } }
具体的代码:
让追求者和代理类去实 现接口
//代理类 Class proxy:givegift {pursuit gg; public proxy(schoolgirl mm) {gg=new pursuit(mm);} public void giveflowers() { gg.giveflowers();} public void givedolls() {gg.givedolls();} public void givechocalate() {gg.givechocolate();} }
姓名:string
存在的问题:这两种情况均不符合实际情况。
问题的解决:
“小张”和“小王”的方法有相似之处,只 不过“小张”送的礼物是“小王”买的。
实现接口
关联关系
具体的代码:
//公共接口类 class givegift { void givedolls(); void giveflowers(); void givechocolate(); }
相关文档
最新文档