代理模式
代理模式,为其他对象提供一种代理以控制对这个对象的访问。
代理模式其实就是在访问对象时引入一定程度的间接性,因为这种间接性,可以附加多种用途。
代理就是真实对象的代表。
代理模式结构图
实际代码结构
Subject类,定义了RealSubject和Proxy的共用接口,这样就在任何使用RealSubject的地方都可以使用Proxy。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp3
{
abstract class Subject
{
public abstract void Request();
}
}
RealSubject类,定义Proxy所代表的真实实体。
using System类,;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp3
{
/// <summary>
/// 定义Proxy所代表的真实实体
/// </summary>
class RealSubject : Subject
{
public override void Request()
{
Console.WriteLine("真实的请求");
}
}
}
Proxy类,保存一个引用使得代理可以访问实体,并提供一个与Subject的接口相同的接口,这样代理就可以用来替代实体。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp3
{
class Proxy : Subject
{
RealSubject realSubject;
public override void Request()
{
if(realSubject == null)
{
realSubject = new RealSubject();
}
realSubject.Request();
}
}
}
代理模式应用
- 远程代理
- 虚拟代理
- 安全代理
- 智能指引
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。