zoukankan      html  css  js  c++  java
  • 代理模式

    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.代理模式的使用场景

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

  • 相关阅读:
    ArrayList源码解析
    HashSet的实现原理
    Spark Streaming之四:Spark Streaming 与 Kafka 集成分析
    Spark Streaming之三:DStream解析
    Spark Streaming之二:StreamingContext解析
    curl与wget区别
    MongoDB之二(增删查改)
    Thread之九:stop
    mysql实战优化之九:MySQL查询缓存总结
    PBE加密算法
  • 原文地址:https://www.cnblogs.com/JustYong/p/4589336.html
Copyright © 2011-2022 走看看