代理模式
**代理模式:**为其他对象提供一种代理以控制对这个对象的访问,即对原有业务逻辑的访问限制
#region 代理模式
interface IBuyFood
{
void GetWarte();
void GetFood();
}
class BuyFood:IBuyFood
{
public void GetWarte()
{
Console.WriteLine("买水");
}
public void GetFood()
{
Console.WriteLine("买食物");
}
}
class BuyFoodProxy:IBuyFood
{
private BuyFood bf = null;
public BuyFoodProxy()
{
bf = new BuyFood();
}
public void GetWarte()
{
Console.WriteLine("替人购买水");
bf.GetWarte();
}
public void GetFood()
{
Console.WriteLine("替人购买食物");
bf.GetFood();
}
}
#endregion
class Program
{
static void Main(string[] args)
{
BuyFoodProxy buyFoodProxy = new BuyFoodProxy();
buyFoodProxy.GetWarte();
}
}
如上所示,定义一个接口IBuyFood,在接口中定义代理和实体公用的两个接口,并且在代理中拥有一个实体的引用,并且实现和实体里相同的方法,这样就可以在任意需要调用实体的地方使用代理来代替,这样就限制了外部对实体的访问,对实体的访问都由代理来执行。
代理模式和装饰器模式的区别:装饰器是给一个对象添加一些额外的职责,装饰器模式是对原有的功能进行扩展,而代理模式是对原有功能访问的限制