標籤:
今天繼續看了代理模式,總結一下,覺得這個代理類主要是通過一個借口抽象了一些代理類和被代理類公用的方法。然後讓被代理類實現這些方法。
再讓被代理類通過代理類中來調用這些方法。
代碼如下:PersonA表示真正追求美女的人,PersonB則是PersonA與美女的傳話人,就是代理類。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 代理模式{ interface GiveGift //代理類與被代理類共有的介面 { void Gift(); } class beautifulGirl //目標類 { private string name; public string Name { get { return name; } set { name = value; } } } class PersonA : GiveGift //被代理人 { beautifulGirl MyGirl; public PersonA(beautifulGirl girl) { this.MyGirl=girl; // Console.WriteLine(MyGirl.Name); } public void Gift() { Console.WriteLine("PersonA送給{0}的禮物", this.MyGirl.Name); } } class PersonB : GiveGift //代理人類 { public PersonA realMan; public PersonB(beautifulGirl girl) { realMan = new PersonA(girl); } public void Gift() { realMan.Gift(); } } class Program { static void Main(string[] args) { beautifulGirl girl = new beautifulGirl(); girl.Name = "小雯"; PersonB Sman = new PersonB(girl); Sman.Gift(); Console.ReadKey(); } }}
輸出結果:
設計模式學習---代理類