CSharp设计模式读书笔记(13):代理模式(学习难度:★★★☆☆,使用频率:★★★★☆)

代理模式:给某一个对象提供一个代理或占位符,并由代理对象来控制对原对象的访问。

模式角色与结构:

示例代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CSharp.DesignPattern.ProxyPattern
{
    class Program
    {
        static void Main(string[] args)
        {
            Subject subject = new RealSubject();
            //subject.Request();

            subject = new ProxySubject();
            subject.Request();

            Console.ReadLine();
        }
    }

    // 抽象主题角色
    abstract class Subject
    {
        public abstract void Request();
    }

    // 真实主题角色
    class RealSubject : Subject
    {
        public override void Request()
        {
            // 业务方法具体实现代码
        }
    }

    // 代理主题角色
    class ProxySubject : Subject
    {
        private RealSubject realSubject = new RealSubject(); // 维持一个对真实主题对象的引用

        public void PreRequest()
        { }

        public override void Request()
        {
            PreRequest(); // 预处理
            realSubject.Request(); // 调用真实主题对象方法
            PostRequest(); // 完成处理
        }

        public void PostRequest()
        { }
    }
}
原文地址:https://www.cnblogs.com/thlzhf/p/3993395.html