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

  • 相关阅读:
    700. Search in a Binary Search Tree
    100. Same Tree
    543. Diameter of Binary Tree
    257. Binary Tree Paths
    572. Subtree of Another Tree
    226. Invert Binary Tree
    104. Maximum Depth of Binary Tree
    1、解决sublime打开文档,出现中文乱码问题
    移植seetafaceengine-master、opencv到ARM板
    ubuntu16.04-交叉编译-SeetaFaceEngine-master
  • 原文地址:https://www.cnblogs.com/zyfadmin/p/8463747.html
Copyright © 2011-2022 走看看