打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
大话设计-代理模式

记录大话设计学习过程。

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

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

代理模式运用案例: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();
        }
    }
    
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
大话设计模式笔记(五)の代理模式
代理模式
深入理解设计模式(23):代理模式
设计模式读书笔记-----代理模式
Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM) (清晰,浅显)
设计模式
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服