定义:安全
在面向对象的系统中,有些对象因为某种缘由(好比建立对象开销很大、或某些操做不安全),直接使用会给使用者或者系统结构带来不少麻烦。这样咱们在不失去透明操做对象的同时来管理、控制这些对象特有的复杂性,增长一层间接层是软件开发常见的解决方式。函数
核心思想:测试
增长一个中间层,使用中间层间接控制。this
案例1:代理
讨债案例,鉴于整个社会的风气,欠钱的是大爷。借钱容易,要钱难。以此为案例,当咱们本身要债的时候,常常要不回来。这个时候咱们须要一个代理,即:讨债公司。这样就容易把钱要回来了。讨债公司即proxy.代理;在此我呼吁社会人群,少一些套路,多一些真诚。如下为代码code
interface subjectBase//建立一个接口,用于一个行为,讨债 { void Dun();//讨债函数 } public class subjectPerson : subjectBase//这个基于讨债接口,真是的债权人。债权人讨债真的太难了,因此咱们使用代理类 { public void Dun()//真是债权人讨债 { Console.WriteLine("直接讨债人:欠钱的大爷,快把钱还了吧!"); } public void Pay()//使用代理讨债须要债权人付出一些费用 { Console.WriteLine("唉,找讨债公司须要付给一些费用.."); } } public class subjectCompany : subjectBase//讨债公司基于讨债接口的讨债行为,即代理人 { subjectPerson person = new subjectPerson();//建立一个真是债券人,讨债公司要根据债权人进行讨债 public void Dun() { this.person.Dun();//给讨债公司进行协议 this.person.Pay();//付给讨债公司报酬 Console.WriteLine("讨债公司:不还钱,在你家泼油漆");//讨债公司进行讨债 Console.WriteLine("完成讨债....");//讨债完成 } } ==========================================讨债测试======================================== static void Main(string[] args) { subjectBase subject = new subjectPerson(); (subject as subjectPerson).Dun(); Console.WriteLine(); subjectBase subjectcompany = new subjectCompany(); (subjectcompany as subjectCompany).Dun(); Console.ReadKey(); }
总结:这里的代理只是一个小的案例,也许不是特别合适。可是它体现了代理(Proxy)思想。其实,代理模式多借用,静态函数、静态类与单例一块儿实现。由于它们调用起来比较方便。对象