大话设计-代理模式
程序员文章站
2022-03-26 22:48:16
记录大话设计学习过程。 代理模式:代理者为其他对象提供代理,以控制对真实对象的访问。 用户调用代理者,代理者通过真实的对象引用让对象去做事情。但是代理者可以附加一些功能,然后才让真实对象去做事情。 代理模式运用案例:WebService生成代理访问服务,虚拟代理、安全代理(控制真实对象访问时的权限) ......
记录大话设计学习过程。
代理模式:代理者为其他对象提供代理,以控制对真实对象的访问。
用户调用代理者,代理者通过真实的对象引用让对象去做事情。但是代理者可以附加一些功能,然后才让真实对象去做事情。
代理模式运用案例:webservice生成代理访问服务,虚拟代理、安全代理(控制真实对象访问时的权限)、智能引用。
using system; namespace consoleapp4 { class program { public static void main(string[] args) { var girl = new schoolgirl("邓紫棋"); proxy proxy = new proxy(girl); proxy.giveflowers(); proxy.givechocolate(); proxy.givedolls(); } } interface givegift { void givedolls(); void giveflowers(); void givechocolate(); } class pursuit : givegift { schoolgirl girl; public pursuit(schoolgirl girl) { this.girl=girl; } public void givechocolate() { console.writeline("送巧克力"); } public void givedolls() { console.writeline("送洋娃娃"); } public void giveflowers() { console.writeline("送花"); } } class proxy : givegift { pursuit pursuit; public proxy(schoolgirl girl) { pursuit = new pursuit(girl); } public void givechocolate() { this.pursuit.givechocolate(); } public void givedolls() { this.pursuit.givedolls(); } public void giveflowers() { this.pursuit.giveflowers(); } } internal class schoolgirl { public string name { get; set; } public schoolgirl(string name) { this.name = name; } } }
using system; namespace consoleapp4 { class program { public static void main(string[] args) { proxy proxy = new proxy(); proxy.request(); } } abstract class subject { public abstract void request(); } class realsubject : subject { public override void request() { console.writeline("真实对象在请求"); } } class proxy : subject { realsubject realsubject; public proxy() { this.realsubject = new realsubject(); } public override void request() { // 写一堆附加功能代码..... realsubject.request(); } } }