zoukankan      html  css  js  c++  java
  • 结构型模式之代理模式

    概述

    在软件开发中,有一种设计模式可以提供与代购网站类似的功能。由于某些原因,客户端不想或不能直接访问一个对象,此时可以通过一个称之为“代理”的第三者来实现间接访问,该方案对应的设计模式被称为代理模式。

    代理模式是一种应用很广泛的结构型设计模式,而且变化形式非常多,常见的代理形式包括远程代理、保护代理、虚拟代理、缓冲代理、智能引用代理等。

    定义

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

    实现

        /// <summary>
        /// 供应商
        /// </summary>
        public interface Supplier
        {
            /// <summary>
            /// 买奶粉
            /// </summary>
            void BuyMilkPowder();
        }
        /// <summary>
        /// 店员
        /// </summary>
        public class Salesclerk : Supplier
        {
            /// <summary>
            /// 买奶粉方法
            /// </summary>
            public void BuyMilkPowder()
            {
                Console.WriteLine("通过店员买了一袋奶粉。");
            }
        }
        public class Proxy : Supplier
        {
            Salesclerk salesclerk = new Salesclerk();
            public void BuyMilkPowder()
            {
                Console.WriteLine("通过中间商买了一袋奶粉。");
                salesclerk.BuyMilkPowder();
            }
        }

    客户端

        class Program
        {
            static void Main(string[] args)
            {
                Supplier proxy = new Proxy();
                proxy.BuyMilkPowder();
                Console.ReadLine();
            }
        }

    总结

    1、代理模式能够将调用用于真正被调用的对象隔离,在一定程度上降低了系统的耦合度;

    2、代理对象在客户端和目标对象之间起到一个中介的作用,这样可以起到对目标对象的保护。代理对象可以在对目标对象发出请求之前进行一个额外的操作,例如权限检查等。

    缺点:

    1、 由于在客户端和真实主题之间增加了一个代理对象,所以会造成请求的处理速度变慢

    2、实现代理类也需要额外的工作,从而增加了系统的实现复杂度。

  • 相关阅读:
    刷题-力扣-120. 三角形最小路径和
    刷题-力扣-1738. 找出第 K 大的异或坐标值
    刷题-力扣-96. 不同的二叉搜索树
    刷题-力扣-64. 最小路径和
    刷题-力扣-1734. 解码异或后的排列
    刷题-力扣-63. 不同路径 II
    刷题-力扣-62. 不同路径
    课程作业 02 动手动脑 2017.10.13
    课程作业 02 2017.10.13
    课程作业01 感想
  • 原文地址:https://www.cnblogs.com/Jabben_Yi/p/5573019.html
Copyright © 2011-2022 走看看