zoukankan      html  css  js  c++  java
  • 大话设计-代理模式

    记录大话设计学习过程。

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

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

    代理模式运用案例: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操作系统学习规划
    底层机器指令学习
    汇编学习笔记
    无符号和有符号数操作优先级
    栈和堆的区别
    图Graph
    判断单链表里面有没有环
    centos配置中文显示和中文输入
    数组相关问题求解
    KMP算法
  • 原文地址:https://www.cnblogs.com/bibi-feiniaoyuan/p/12483368.html
Copyright © 2011-2022 走看看