定义 为其他对象提供一个代理通道,来完成对这个对象的访问。
类型 结构型模式
特点 可以对调用者隐藏实际对象。
举例 张三替李四追求王五。
本文以C#为例,先来看类图🔻

代理模式还是相对比较简单和容易理解的,所以我们直接看具体的代码实现🔻
1
2
3
4
5
6
7
|
/// <summary>
/// 定义一个代理和真实类共用的接口
/// </summary>
public abstract class LoveBase
{
public abstract void SendLove();
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
/// <summary>
/// 代理类
/// </summary>
public class ProxyLove : LoveBase
{
private RealLove _realLove;
public override void SendLove()
{
//初始化真实的表白对象,并调用真实的表白方法
_realLove ??= new RealLove();
_realLove.SendLove();
}
}
|
1
2
3
4
5
6
7
8
9
10
|
/// <summary>
/// 真实的表白类
/// </summary>
public class RealLove : LoveBase
{
public override void SendLove()
{
Console.WriteLine("张三真实的表白");
}
}
|
1
2
3
4
|
//客户端调用
LoveBase love = new ProxyLove();
love.SendLove();
//结果输出 张三真实的表白
|
参考资料:
《大话设计模式》