定義:安全
在面向對象的系統中,有些對象因爲某種緣由(好比建立對象開銷很大、或某些操做不安全),直接使用會給使用者或者系統結構帶來不少麻煩。這樣咱們在不失去透明操做對象的同時來管理、控制這些對象特有的複雜性,增長一層間接層是軟件開發常見的解決方式。函數
核心思想:測試
增長一箇中間層,使用中間層間接控制。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)思想。其實,代理模式多借用,靜態函數、靜態類與單例一塊兒實現。由於它們調用起來比較方便。對象