• 大话设计-代理模式


    记录大话设计学习过程。

    代理模式:代理者为其他对象提供代理,以控制对真实对象的访问。

    用户调用代理者,代理者通过真实的对象引用让对象去做事情。但是代理者可以附加一些功能,然后才让真实对象去做事情。

    代理模式运用案例:WebService生成代理访问服务,虚拟代理、安全代理(控制真实对象访问时的权限)、智能引用。

    using System;
    
    namespace ConsoleApp4
    {
        class Program
        {
            public static void Main(string[] args)
            {
                var girl = new SchoolGirl("邓紫棋");
                Proxy proxy = new Proxy(girl);
                proxy.GiveFlowers();
                proxy.GiveChocolate();
                proxy.GiveDolls();
            }
        }
    
        interface GiveGift
        {
            void GiveDolls();
            void GiveFlowers();
            void GiveChocolate();
        }
    
        class Pursuit : GiveGift
        {
            SchoolGirl girl;
            public Pursuit(SchoolGirl girl)
            {
                this.girl=girl;
            }
    
            public void GiveChocolate()
            {
                Console.WriteLine("送巧克力");
            }
    
            public void GiveDolls()
            {
                Console.WriteLine("送洋娃娃");
            }
    
            public void GiveFlowers()
            {
                Console.WriteLine("送花");
            }
        }
    
        class Proxy : GiveGift
        {
            Pursuit Pursuit;
            public Proxy(SchoolGirl girl)
            {
                Pursuit = new Pursuit(girl);
            }
    
            public void GiveChocolate()
            {
                this.Pursuit.GiveChocolate();
            }
    
            public void GiveDolls()
            {
                this.Pursuit.GiveDolls();
            }
    
            public void GiveFlowers()
            {
                this.Pursuit.GiveFlowers();
            }
        }
    
        internal class SchoolGirl
        {
            public string Name { get; set; }
            public SchoolGirl(string name)
            {
                this.Name = name;
            }
        }
    }
    View Code
    using System;
    
    namespace ConsoleApp4
    {
        class Program
        {
            public static void Main(string[] args)
            {
                Proxy proxy = new Proxy();
                proxy.Request();
            }
        }
    
        abstract class Subject
        {
            public abstract void Request();
        }
    
        class RealSubject : Subject
        {
            public override void Request()
            {
                Console.WriteLine("真实对象在请求");
            }
        }
    
        class Proxy : Subject
        {
            RealSubject realSubject;
    
            public Proxy()
            {
                this.realSubject = new RealSubject();
            }
    
            public override void Request()
            {
                // 写一堆附加功能代码.....
                realSubject.Request();
            }
        }
        
    }
    量变会引起质变。
  • 相关阅读:
    LInux SSH远程文件/目录传输命令scp(转载)
    Linux系统时间设置(转载)
    Linux重置mysql密码(转载)
    快速输入(简单版)
    bitset
    或 、与、异或
    bitset
    Java面向对象3(K~O)
    Java面向对象2(G~J)
    数据结构实验之栈与队列六:下一较大值(二)(SDUT 3333)
  • 原文地址:https://www.cnblogs.com/bibi-feiniaoyuan/p/12483368.html
Copyright © 2020-2023  润新知