代理模式:为其他对象提供一种代理以控制对这个对象的访问
使用场合:
(1)远程代理,为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实
.NET中在应用程序项目中加入一个web引用,引用一个WebService此时会在项目中产生一个WebReference的文件夹和一些文件,就是代理
(2)虚拟代理:根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象
可以达到性能的优化,打开一个html,图片是一张一张加载的,未打开的图片,代理存储了真实图片的尺寸和路径
(3)安全代理:用来控制真实对象访问时的权限
(4)智能指针,是指当调用真实对象时,代理处理另外一些事情
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 代理模式
{
class Program
{
abstract class Subject
{
public abstract void Request();
}
class RealSubject:Subject
{
public override void Request()
{
Console.WriteLine("real request");
}
}
class Proxy:Subject
{
RealSubject realSubject;
public override void Request()
{
if (realSubject == null)
realSubject = new RealSubject();
realSubject.Request();
}
}
static void Main(string[] args)
{
Proxy proxy = new Proxy();
proxy.Request();
Console.Read();
}
}
}