代理模式
-
為其他對象提供一種代理以控制對這個對象的訪問。
屏幕快照 2016-01-25 下午8.24.06.png - 舉例:
using System;
namespace Factory1
{
//代理類提供的接口
interface IGiveGift
{
void GiveDolls();
void GiveFlowers();
void GiveChocolate();
}
//接受者
class SchoolGirl{
private string name;
public string Name
{
get{ return name;}
set{ name = Name;}
}
}
//追求者
class Pursuit:IGiveGift
{
SchoolGirl mm;
public Pursuit(SchoolGirl mm)
{
this.mm = mm;
}
public void GiveDolls()
{
Console.WriteLine (mm.Name + "give dolls");
}
public void GiveFlowers()
{
Console.WriteLine (mm.Name + "give your fllowers");
}
public void GiveChocolate()
{
Console.WriteLine (mm.Name + "give your chocolate");
}
}
//代理類
class Proxy:IGiveGift
{
Pursuit gg;
//創建追求者
public Proxy(SchoolGirl mm)
{
gg = new Pursuit (mm);
}
public void GiveDolls()
{
gg.GiveDolls ();
}
public void GiveFlowers()
{
gg.GiveFlowers ();
}
public void GiveChocolate()
{
gg.GiveChocolate ();
}
}
class MainClass
{
public static void Main (string[] args)
{
SchoolGirl jj = new SchoolGirl();
jj.Name = "jioajioa";
Proxy daili = new Proxy (jj);
daili.GiveDolls ();
daili.GiveChocolate ();
daili.GiveFlowers ();
Console.Read ();
}
}
}
代理模式應用
- 遠程代理,也就是為一個對象在不同的地址空間提供局部代表。這樣可以隱藏一個對象存在于不同地址空間的事實。
- 虛擬代理,是根據需要創建開銷很大的對象。通過它來存放實例化需要很長時間的真是對象。(HTML 網頁中有很多文字和圖片,用虛擬代理代替了真實的圖片)
- 安全代理,用來控制真是對象訪問時的權限。一般用于對象應該有不同的訪問權限的時候。
- 智能指引,是指當調用真是的對象的時候,代理處理另外一些事情。