代理模式(八)

定義:安全

    在面向對象的系統中,有些對象因爲某種緣由(好比建立對象開銷很大、或某些操做不安全),直接使用會給使用者或者系統結構帶來不少麻煩。這樣咱們在不失去透明操做對象的同時來管理、控制這些對象特有的複雜性,增長一層間接層是軟件開發常見的解決方式。函數

 

核心思想:測試

    增長一箇中間層,使用中間層間接控制。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)思想。其實,代理模式多借用,靜態函數、靜態類與單例一塊兒實現。由於它們調用起來比較方便。對象

相關文章
相關標籤/搜索