# 代理模式

属于结构型模式。
代理模式为其他对象提供一种代理以控制对这个对象的访问。

按职责来划分,通常有以下使用场景:

  1. 远程代理
  2. 虚拟代理
  3. Copy-on-Write 代理
  4. 保护(Protect or Access)代理
  5. Cache 代理
  6. 防火墙(Firewall)代理
  7. 同步化(Synchronization)代理
  8. 智能引用(Smart Reference)代理。

# 类图

  1. 创建接口,由具体的类实现接口
  2. 创建代理类,实现接口

img

# 代码

# 接口

namespace StructuralPattern_ProxyPattern
{
    public interface IShape
    {
        /// <summary>
        /// 形状
        /// </summary>
        public void MyShape();
    }
}

# 实现接口的类

namespace StructuralPattern_ProxyPattern
{
    /// <summary>
    /// 正方形
    /// </summary>
    public class Square : IShape
    {
        public void MyShape()
        {
            Console.WriteLine("Square");
        }
    }
}
namespace StructuralPattern_ProxyPattern
{
    /// <summary>
    /// 正方形的代理
    /// </summary>
    public class ProxySquare : IShape
    {
        private Square RealSquare;
        public void MyShape()
        {
            Console.WriteLine("ProxySquare");
            if (RealSquare == null)
            {
                RealSquare = new Square();
            }
            RealSquare.MyShape();
        }
    }
}

# 测试

  • 使用 ProxySquare 访问 Square
namespace StructuralPattern_ProxyPattern
{
    public class Program
    {
        private static void Main()
        {
            IShape shape = new ProxySquare();
            shape.MyShape();
        }
    }
}

运行结果:
ProxySquare
Square

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Maikire 微信支付

微信支付

Maikire 支付宝

支付宝

Maikire 贝宝

贝宝