c# 代理模式

來源:互聯網
上載者:User

代理模式的應用:

遠程代理,為一個對象在不同的地址空間提供局部代表,可以隱藏一個對象存在於不同地質空間的事實。
虛擬代理,根據需要建立開銷很大的對象,通過代理來存放執行個體化需要很長時間的真實對象。
安全代理,用來控制真實對象的存取權限。
智能代理,當調用代理時,可以代理處理一些額外的功能。
案例情境:
向一位自己心儀的女孩表達愛意,一般我們有兩種選擇:親自出馬(有自信的人)和 使用‘媒婆'(比較害羞)。
其中使用‘媒婆'就是代理行為,我們實現如下:
調用代理模式的主函數:複製代碼 代碼如下: class Program
{
static void Main(string[] args)
{
SchoolGirl jiaojiao = new SchoolGirl();
jiaojiao.Name = "李嬌嬌";
//親自出馬
IGiveGift self = new Pursuit(jiaojiao);
self.GiveChocolate();//送巧克力
self.GiveDolls();//送洋娃娃
self.GiveFlowers();//送鮮花
//使用‘媒婆'
IGiveGift daili = new Proxy(jiaojiao);
daili.GiveChocolate();//送巧克力
daili.GiveDolls();//送洋娃娃
daili.GiveFlowers();//送鮮花
Console.ReadKey();
}
}

SchoolGirl類是代表女孩對象,實現如下: 複製代碼 代碼如下: public class SchoolGirl
{
private string name;
public string Name
{
get;
set;
}
}

Pursuit類是代表一個真實的事物(追求女孩的追求者),實現如下:複製代碼 代碼如下: public class Pursuit : IGiveGift
{
SchoolGirl mm;
public Pursuit(SchoolGirl 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 + "送你巧克力");
}
}

Proxy類是Pursuit類的代表,實現如下:複製代碼 代碼如下: public class Proxy : IGiveGift
{
Pursuit gg;
public Proxy(SchoolGirl mm)
{
this.gg = new Pursuit(mm);
}
public void GiveDolls()
{
gg.GiveDolls();
}
public void GiveFlowers()
{
gg.GiveFlowers();
}
public void GiveChocolate()
{
gg.GiveChocolate();
}
}

Pursuit類和Proxy類都繼承IGiveGift介面,實現如下:複製代碼 代碼如下: interface IGiveGift
{
void GiveDolls();
void GiveFlowers();
void GiveChocolate();
}

我們看一張代理模式的結構圖:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.