代理模式

1.定义

Provide a surrogate(代理) or placeholder for another object to control access to it(为其他对象提供一种代理以控制对这个对象的访问)

2.模式说明

.Subject抽象主题角色

抽象主题类可以是抽象类也可以是接口,是一个最普通的业务类型定义,无特殊要求。

.RealSubject具体主题角色

也叫做被委托角色、被代理角色。是业务逻辑的具体执行者。

.Proxy代理主题角色

也叫做委托类、代理类。它负责对真实角色的引用,并且在真实主题角色处理完毕前后做预处理和善后处理工作。

    public interface ISubject
    {
        void Request();
    }

    public class ConcreteSubject : ISubject
    {
        public void Request()
        {
            Console.WriteLine("处理具体业务");
        }
    }

    public class Proxy : ISubject
    {
        private readonly ISubject _subject;

        public Proxy(ISubject subject)
        {
            _subject = subject;
        }

        public void Request()
        {
           _subject.Request();
        }

//预处理
private void Before()
{}

//后续处理
private void After()
{} }
    /// <summary>
    /// 场景类
    /// </summary>
    class Program
    {

        private static void Main(string[] args)
        {
            Proxy p = new Proxy(new ConcreteSubject());

            p.Request();

            Console.ReadKey();
        }

    }

3.代理模式的使用场景

打官司为什么要找个律师?因为你不想参与中间过程的是是非非,只要完成自己的答辩就成。其他的比如事前调查、事后追查都由律师来搞定,这样就可以减轻自己的负担。

原文地址:https://www.cnblogs.com/JustYong/p/4589336.html