标签:之一 git 中介 har com enc 用户 sig 实例
代理模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的接口。
概念: 给某一个对象提供一个代理,并由代理对象控制对原对象的引用。
角色:
分类:
根据代理模式的使用目的不同,代理模式又可以分为多种类型:
/// <summary>
/// 抽象主题角色
/// </summary>
public abstract class Shop
{
/// <summary>
/// 出售
/// </summary>
public abstract void Sell();
}
/// <summary>
/// 线下实体商店
/// </summary>
public class RealShop : Shop
{
public override void Sell()
{
Console.WriteLine("卖了一份黄焖鸡米饭");
}
}
/// <summary>
/// 网上商店
/// </summary>
public class InternetShop : Shop
{
// 引用真实主题实例
RealShop realShop;
/// <summary>
/// 通过代理类访问真实实体对象的方法
/// </summary>
public override void Sell()
{
if (realShop == null)
{
realShop = new RealShop();
}
this.PreSell();
// 调用真实主题方法
realShop.Sell();
this.PostSell();
}
// 代理角色执行的一些操作
public void PreSell()
{
// 商品上架
Console.WriteLine("线上创建商店,上传商品列表");
}
// 代理角色执行的一些操作
public void PostSell()
{
Console.WriteLine("等待外卖骑手送货");
}
}
/// <summary>
/// 调用
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
// 创建一个代理对象并发出请求
InternetShop proxy = new InternetShop();
proxy.Sell();
Console.ReadLine();
}
优点:
缺点:
在实际开发过程中,我们在客户端添加服务引用的时候,在客户程序中会添加一些额外的类,在客户端生成的类扮演着代理主题角色,我们客户端也是直接调用这些代理角色来访问远程服务提供的操作。这个是远程代理的一个典型例子。
标签:之一 git 中介 har com enc 用户 sig 实例
原文地址:http://www.cnblogs.com/snaildev/p/7660476.html