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

本文以C#为例,先来看类图🔻

设计模式-代理模式.jpg

代理模式还是相对比较简单和容易理解的,所以我们直接看具体的代码实现🔻

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();
            //结果输出 张三真实的表白

参考资料:
《大话设计模式》