不直接访问目的对象资源,而是通过被代理对象访问目的对象资源,其实就是在代理对象内部生成一个被代理对象,而被代理对象可以访问目的对象资源。代理对象和被代理对象都实现了访问目的对象资源的接口。
class Mgirl
{private string name; 目的对象
public string Name
{
get { return name; }
set { name = value; }
}
}
interface Mgift 访问目的对象接口
{
void GiveFl();
void GiveCh();
}
class Pursuit : Mgift 被代理对象 可以直接访问目的资源
{
Mgirl mm;
public Pursuit(Mgirl mm)
{
this.mm = mm;
}
public void GiveFl()
{
Console.WriteLine(mm.Name+"flowers");
}
public void GiveCh()
{
Console.WriteLine(mm.Name+"Chocolate");
}
}
class Proxy : Mgift 代理对象 内部通过被代理对象访问目的资源
{
Pursuit gg; //对实际程序的一个引用
public Proxy(Mgirl mm)
{
gg = new Pursuit(mm);
}
public void GiveFl()
{
gg.GiveFl();
}
public void GiveCh()
{
gg.GiveCh();
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("jia");
Mgirl mm = new Mgirl();
mm.Name = "mm";
Proxy daili = new Proxy(mm); 通过代理对象间接访问
daili.GiveFl();
daili.GiveCh();
}
}