人物: 卓贾易 戴励 娇娇
实现要求: 桌贾易心里喜欢娇娇, 戴励与娇娇关系好,桌贾易也和戴励关系好,所以,桌贾易让戴励代替自己给娇娇送礼物。
第一版: 没有代理的代码
第二版:只有代理
第三版:符合实际要求
定义一个接口类,让追求者类实现送礼物的接口,让代理类也实现送礼物的借口,但是在代理方法中调用“追求者类”的方法
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();
}
}
代理模式: 为其他对象提供一种代理以控制对这个对象的访问。