码迷,mamicode.com
首页 > 其他好文 > 详细

结构型模式之代理模式

时间:2016-06-10 00:59:32      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

概述

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

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

定义

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

实现

    /// <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、实现代理类也需要额外的工作,从而增加了系统的实现复杂度。

结构型模式之代理模式

标签:

原文地址:http://www.cnblogs.com/Jabben/p/5573019.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!