1.代理模式
為其他對象提供代理以控制對這個對象的訪問。
- 遠程代理:為一個對象在不同的地址空間提供舉報代表。這樣可以隱藏一個對象在不同地址空間的事實。
- 虛擬代理:是依據需要創建開銷很大的對象。通過它來存放實例化需要長時間的真是對象。
- 安全代理:用來控制真實對象的訪問時的權限。
- 智能代理:指當調用真實對象時,代理處理另外一些事。
2.實例
namespace 代理模式 { class Program { static void Main(string[] args) { GirlMM mm = new GirlMM(); mm.Name = "夏花"; Proxy proxy = new Proxy(mm); proxy.GiveDolls(); proxy.GiveFlowers(); proxy.GiveChocolate(); Console.ReadLine(); } } /// <summary> /// 被代理對象執行的操作接口 /// </summary> interface IGiveGift { void GiveDolls(); void GiveFlowers(); void GiveChocolate(); } /// <summary> /// 被代理者希望代理執行操作的類 /// </summary> class GirlMM { private string name; public string Name { get { return name; } set {name = value;} } } /// <summary> /// 被代理者 /// </summary> class Pursuit: IGiveGift { GirlMM mm; public Pursuit(GirlMM mm) { this.mm = mm; } public void GiveDolls() { Console.WriteLine(mm.Name+"送你洋娃娃"); } public void GiveFlowers() { Console.WriteLine(mm.Name + "送你鮮花"); } public void GiveChocolate() { Console.WriteLine(mm.Name + "送你巧克力"); } } class Proxy:IGiveGift { Pursuit gg; public Proxy(GirlMM mm) { gg = new Pursuit(mm); } public void GiveDolls() { gg.GiveDolls(); } public void GiveFlowers() { gg.GiveFlowers(); } public void GiveChocolate() { gg.GiveChocolate(); } } }