C# 程式設計經典300例 實例097 水果的銷售 代理模式

        實例097介紹代理模式,用一個類別替換另一個類別。


實例描述


範例以水果銷售為例講解代理模式的使用方法。水果由果農採收之後賣給水果代理商,水果代理商再賣給消費者,水果代理商相當於代理類別。


輸出「果農賣出100噸水果,還剩99999900噸水果,收入500000元!」、「代理商賣出水果123千克,還剩99877千克水果,收入1230元!」、「消費者花費1230元購買123千克水果!」。


實現過程


//水果銷售者


public abstract class FruitSeller


{


   public abstract int Sell(ref int money);


}



//果農


public class Orchardist:FruitSeller


{


   int money = 0;


   int fruit = 100000000;


   public override int Sell(ref int money)


   {


       int fruit = money / 5000;


       int price = fruit * 5000;


       money -= price;


       this.money += price;


       this.fruit -= fruit;


       


       Console.WriteLine(“果農賣出{0}噸水果,還剩{1}噸水果,收入{2} 元!”,fruit, this.fruit, price);


       return fruit;


   }


}



//水果代理商


public class FruitAgent:FruitSeller


{


   int money = 500000;


   int fruit = 0;


   FruitSeller orchardust;



   public override int Sell(ref int money)


   {


       if(orchardist == null) orchardist = new Orchardist();


       int fruit = money / 10;


       if(fruit > this.fruit) this.fruit += this.orchardist.Sell(ref this.money)*1000


       this.fruit -= fruit;


       this.money += fruit*10;


       money -= fruit*10;


      


       Console.WriteLine(“代理商賣出水果{0}千克,還剩{1}千克水果,收入{2}元!”,fruit, this.fruit,fruit*10);


       return fruit;


   }


}



main函數代碼如下:



FruitAgent proxy = new FruitAgent();


int money = 1234;


int fruit = proxy.Sell(ref money);


Console.WriteLine(“消費者花費{0}元購買{1}千克水果!”,1234 - money, fruit);


 


代碼解析



代理模式替一個類提供一個替換的代理類來實現對其進行訪問,通過代理類可以降低類的複雜度,還可以提高類訪問時的有好度,增加類的訪問安全性,在使用者無法直接對類進行調用時,使用代理類來建立中間層。


 



留言

這個網誌中的熱門文章

異世界NTR web版第三章 觀後感 喧賓奪主 ,反派實力過強

持有縮小技能的D級冒險者,與聖女結婚並加入勇者團隊 漫畫 01-04 觀後感 大我與小我

泛而不精的我被逐出了勇者隊伍 web第三章 觀後感 菲莉真能打; 露娜超爽der