zoukankan      html  css  js  c++  java
  • C#设计模式--代理模式(学习Learning hard 设计模式笔记)

     class Program
        {
            static void Main(string[] args)
            {
                //创建一个代理对象 并发出请求
                Person proxy = new Friend();
    
                proxy.BuyProduct();
    
                Console.Read();
            }
        }
    
        //抽象主题角色
        public abstract class Person
        {
            public abstract void BuyProduct();
    
        }
    
        //真实主题角色
        public class RealBuyPerson : Person
        {
            public override void BuyProduct()
            {
                Console.WriteLine("帮我买个苹果手机和苹果电脑");
            }
        }
    
    
    
        //代理主题角色
        public class Friend : Person
        {
            //引用真实主题实例
            RealBuyPerson RealSubject;
            public override void BuyProduct()
            {
                Console.WriteLine("通过代理类访问真实实体对象的方法");
                if (RealSubject == null)
                {
                    RealSubject = new RealBuyPerson();
                }
    
    
                //调用真实的主题方法
                RealSubject.BuyProduct();
                this.PreBuyProduct();
                this.PostProduct();
    
            }
    
    
            //代理角色执行一些操作
            public void PreBuyProduct()
            {
                //买东西,列个清单,买的东西比较多
                Console.WriteLine("我怕弄糊涂了,需要列一张清单,张三:手机,李四:要带电脑...........");
                Console.WriteLine("买手机...........");
                Console.WriteLine("买电脑...........");
                Console.WriteLine("...........");
            }
    
            //买完东西后 开始给朋友分发
            public void PostProduct()
            {
                Console.WriteLine("买完了。。开始分东西,张三 手机,李四 电脑…………");
            }
        }

    优点:

    1. 代理模式能够将调用用于真正被调用的对象隔离,在一定程度上降低了系统的耦合度;
    2. 代理对象在客户端和目标对象之间起到一个中介的作用,这样可以起到对目标对象的保护。代理对象可以在对目标对象发出请求之前进行一个额外的操作,例如权限检查等。

    缺点:

    1.  由于在客户端和真实主题之间增加了一个代理对象,所以会造成请求的处理速度变慢
    2. 实现代理类也需要额外的工作,从而增加了系统的实现复杂度。

    原文地址http://www.cnblogs.com/zhili/p/ProxyPattern.html

  • 相关阅读:
    一分钟认识:Cucumber框架(一)
    迭代=冲刺?
    Nresource服务之接口缓存化
    58集团支付网关设计
    服务治理在资源中心的实践
    资源中心——连接池调优
    4种常用的演讲结构: 黄金圈法则结构、PREP结构、时间轴结构、金字塔结构
    微服务时代,领域驱动设计在携程国际火车票的实践
    Sentinel -- FLOW SLOT核心原理篇
    管理篇-如何跨部门沟通?
  • 原文地址:https://www.cnblogs.com/zyfadmin/p/8463747.html
Copyright © 2011-2022 走看看