代理模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的接口.根据代理模式的使用目的不同,代理模式又可以分为多种类型,例如保护代理、远程代理、虚拟代理、缓冲代理等,它们应用于不同的场合,满足用户的不同需求
复制代码代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DesignModel
{
public class Proxy:IAction
{
ZQZ zzz = null;
public Proxy(ZQZ mm)
{
zzz = mm;
}
public void SendFlower()
{
zzz.SendFlower();
}
public void SendCake()
{
zzz.SendCake();
}
}
public interface IAction
{
void SendFlower();
void SendCake();
}
public class ZQZ : IAction
{
public string myname { set; get; }
public void SendFlower()
{
Console.WriteLine(myname+"送花");
}
public void SendCake()
{
Console.WriteLine(myname+"送蛋糕");
}
}
}
客户端调用:
复制代码代码如下:
ZQZ zzz = new ZQZ();
zzz.myname = "朱建军";
Proxy p = new Proxy(zzz);
p.SendFlower();
p.SendCake();
代理模式分类:
1. 远程代理,也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。
例如: webservice 服务
2. 虚拟代理, 是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真是对象。
浏览器当中是用代理模式来优化下载页面的
3.安全代理
用来控制真实对象访问时的权限。
4.智能指引
是指调用真实对象时,代理处理另外一些事。