人物: 卓賈易 戴勵 嬌嬌
實現要求: 桌賈易心裏喜歡嬌嬌, 戴勵與嬌嬌關係好,桌賈易也和戴勵關係好,所以,桌賈易讓戴勵代替自己給嬌嬌送禮物。
第一版: 沒有代理的代碼
第二版:只有代理
第三版:符合實際要求
定義一個接口類,讓追求者類實現送禮物的接口,讓代理類也實現送禮物的藉口,但是在代理方法中調用“追求者類”的方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ProxyPattern
{
class Program
{
static void Main(string[] args)
{
SchoolGirl jiaojiao = new SchoolGirl();
jiaojiao.Name = "嬌嬌";
Proxy daili = new Proxy(jiaojiao);
daili.GiveDolls();
daili.GiveFlowers();
daili.GiveChocolate();
Console.Read();
}
}
}
interface IGiveGift
{
void GiveDolls();
void GiveFlowers();
void GiveChocolate();
}
class SchoolGirl
{
private string name;
public string Name
{
get{return name;}
set { name = value;}
}
}
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);
}
}
//讓代理類也實現送禮物的藉口,但是在代理方法中調用“追求者類”的方法
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();
}
}
代理模式: 爲其他對象提供一種代理以控制對這個對象的訪問。