什么是代理模式呢,其实代理模式是我们造一个代理者,然后和这个代理者去通信,然后这个代理者其实是持有其他对象的,从而我们就可以通过控制这个代理对象而控制了代理对象所持有的对象。
//被接受礼物的类
class SchoolGirl
{
//字段名称
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}
//送礼物的接口 设计代理者和实际要访问的对象共同的接口,我们是需要相同的服务的,统一接口很好
interface GiveGift
{
//送洋娃娃
void GiveDolls();
//送花
void GiveFlowers();
//送巧克力
void GiveChocolate();
}
//实际追求者,也就实际送礼物的人
class Pursuit : GiveGift
{
//追求者必须认识被追求的人
SchoolGirl mm;
//构造函数,并且初始化把女孩指定给追求者
public Pursuit(SchoolGirl mm)
{
this.mm = mm;
}
//追求者的行为
public void GiveChocolate()
{
Console.WriteLine(mm.Name + "送给你巧克力。");
}
public void GiveDolls()
{
Console.WriteLine(mm.Name + "送给你洋娃娃。");
}
public void GiveFlowers()
{
Console.WriteLine(mm.Name + "送给你花。");
}
}
//代理者
class Proxy : GiveGift
{
//真正的追求者
Pursuit gg;
public Proxy(SchoolGirl mm)
{
gg = new Pursuit(mm);
}
public void GiveChocolate()
{
gg.GiveChocolate();
}
public void GiveDolls()
{
gg.GiveDolls();
}
public void GiveFlowers()
{
gg.GiveFlowers();
}
}
class Program
{
static void Main(string[] args)
{
//先构造被送礼物的对象
SchoolGirl girl = new SchoolGirl();
girl.Name = "孙小妹";
//构造代理者,并且 把接受礼物的对象传过来
GiveGift li = new Proxy(girl);
li.GiveDolls();
li.GiveFlowers();
li.GiveChocolate();
}
}
}